zoukankan      html  css  js  c++  java
  • LeetCode 733 图像渲染

    LeetCode 733 图像渲染

    给定一副代表图像的二维整型数组,其中每一个整数表示一个像素点的像素值。从某个起始点(sr, sc)出发,将与它在上、下、左、右四个方向上相邻的所有像素值相同的点(包括起始点)的都标记为一个新的像素值newColor
    DFS

    执行用时:1 ms, 在所有 Java 提交中击败了97.15%的用户
    内存消耗:40.5 MB, 在所有 Java 提交中击败了91.67%的用户

    class Solution {
        public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
            //image不合法
            if(image==null || image.length==0 || image[0].length==0) {
                return image;
            }
            //方向数组
            int[][] directs = new int[][]{
                {0,1},{1,0},{0,-1},{-1,0}
            };
            //标记已访问
            boolean[][] isVisited = new boolean[image.length][image[0].length];
            dfs(image, directs, isVisited, newColor, image[sr][sc], sr, sc);
            return image;
        }
    
        public void dfs(int[][] image, int[][] directs, boolean[][] isVisited, int newColor, int targetPixel, int sr, int sc) {
            //超出边界、元素已访问、不是目标像素值
            if((sr<0 || sr>=image.length) 
                || (sc<0 || sc>=image[0].length) 
                || (isVisited[sr][sc])
                ||(image[sr][sc]!=targetPixel)) {
                return;
            }
            else {
                //标记
                isVisited[sr][sc] = true;
                image[sr][sc] = newColor;
                for(int[] direct:directs) {
                    dfs(image, directs, isVisited, newColor, targetPixel, sr+direct[0], sc+direct[1]);
                }
            }
        }
    }
    
  • 相关阅读:
    强大的Resharp插件
    配置SPARK 2.3.0 默认使用 PYTHON3
    python3 数据库操作
    python3 学习中的遇到一些难点
    log4j的一个模板分析
    MYSQL内连接,外连接,左连接,右连接
    rabbitmq实战记录
    领域模型分析
    分布式系统学习笔记
    阿里开发规范 注意事项
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13515769.html
Copyright © 2011-2022 走看看