• 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]);
                }
            }
        }
    }
    
  • 相关阅读:
    winsows10 小技巧
    数组与智能指针
    卸载 VS2015
    Effective C++
    修改 git commit 的信息
    线程管理
    并发编程简介
    个别算法详解
    git 删除某个中间提交版本
    git 查看某一行代码的修改历史
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13515769.html
Copyright © 2020-2023  润新知