『LeetCode|每日一题』---->颜色填充

目录

1.每日一句

2.作者简介

『LeetCode|每日一题』颜色填充

1.每日一题

2.解题思路

        2.1 思路分析(DFS)

        2.2 核心代码

        2.3 完整代码

        2.4 运行结果


1.每日一句

我的宇宙为你藏着无数个星球

2.作者简介

🏡个人主页:XiaoXiaoChen-2716 

📚学习专栏:力扣专栏

🕒发布日期:2022/11/15

 

LeetCode|每日一题』颜色填充

1.每日一题

原文链接--->点我

2.解题思路

        2.1 思路分析(DFS)

        S1:首先根据题意,我们知道改变的颜色题目给出来了,所以我们还需要定义一个原来的颜色oldColor作为dfs函数的参数,至于其它的参数,无非就是方向参数,矩阵还有两个颜色参数;

        S2:刚开始需要做越界检查,也就是限定i、j的范围;

        S3:然后就是排除不能继续遍历的情况,首先就是当前位置的颜色不等于原来的老颜色,然后就是当前这个位置已经涂上了新颜色,这两种情况也要直接返回;

        S4:没遍历一个符合要求的点也要记得把该点涂上新颜色;

        S5:在传入参数时,老颜色就是题目给的位置的点的颜色,也就是image[sr][sc]

        2.2 核心代码

    private void dfs(int[][] image, int i, int j, int newColor , int oldColor){
        int row = image.length;
        int col = image[0].length;
        if(i < 0 || i >= row || j < 0 || j >= col || image[i][j] != oldColor || image[i][j] == newColor){
            return ;
        }
        image[i][j] = newColor;
        dfs(image , i + 1 , j , newColor , oldColor);
        dfs(image , i - 1 , j , newColor , oldColor);
        dfs(image , i , j + 1 , newColor , oldColor);
        dfs(image , i , j - 1 , newColor , oldColor);
    }

        2.3 完整代码

class Solution {
    public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
        dfs(image , sr , sc , newColor , image[sr][sc]);
        return image;
    }
    private void dfs(int[][] image, int i, int j, int newColor , int oldColor){
        int row = image.length;
        int col = image[0].length;
        if(i < 0 || i >= row || j < 0 || j >= col || image[i][j] != oldColor || image[i][j] == newColor){
            return ;
        }
        image[i][j] = newColor;
        dfs(image , i + 1 , j , newColor , oldColor);
        dfs(image , i - 1 , j , newColor , oldColor);
        dfs(image , i , j + 1 , newColor , oldColor);
        dfs(image , i , j - 1 , newColor , oldColor);
    }
}

        2.4 运行结果


🍁 类似题目推荐:

1.数据结构基础

2.算法专项练习

3.剑指offer专项练习

4.推荐一个学习网站:LeetCode,算法的提升在于日积月累,只有每天练习才能保持良好的状态

如果文章对各位大佬有帮助就支持一下噢,不好的地方请各位大佬多多指教!   

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值