zoukankan      html  css  js  c++  java
  • 每日一练leetcode

    颜色填充

    编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。

    待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的行坐标为 sr 列坐标为 sc。需要填充的新颜色为 newColor 。

    「周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。

    请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。

    class Solution {
        public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
            //如果新值和旧值一样,就没必要涂了
            if(newColor == image[sr][sc]){
                return image;
            }
            dfs(image,sr,sc,newColor,image[sr][sc]);
            return image;

        }
        public void dfs(int[][] image, int sr, int sc, int newColor, int oldColor){
            if(sr < 0 || sr >= image.length || sc < 0||sc >= image[sr].length || image[sr][sc]!=oldColor)
                return;
            image[sr][sc] = newColor;
            dfs(image,sr-1,sc,newColor,oldColor);
            dfs(image,sr+1,sc,newColor,oldColor);
            dfs(image,sr,sc-1,newColor,oldColor);
            dfs(image,sr,sc+1,newColor,oldColor);
        }
    }‘
    解法一:深度优先搜索
    解法二:广度优先搜索
     
    此方法是深度优先搜索(递归)
  • 相关阅读:
    autoreleasepool
    #ifndef/#define/#endif
    类工厂创建单例
    第一篇献给你:Block的回调
    博客纪念日
    [系列教程] Discuz模板的制作方法
    使用Discuz!后台备份和恢复Discuz!站点数据库的方法教程
    discuz x2.5 还原教程
    80后公务员辞职自述:7年收入没涨 能力是听话
    公务员队伍开始动荡了吗?
  • 原文地址:https://www.cnblogs.com/nenu/p/15227112.html
Copyright © 2011-2022 走看看