DAY 78 LeetCode学习笔记

733. 图像渲染

前言

常规广搜和深搜.
时间复杂度:
m是图像矩阵列数,n是行数

  • 广搜: O ( m × n ) O(m \times n) O(m×n)
  • 深搜: O ( m × n ) O(m \times n) O(m×n)
    空间复杂度:
  • 广搜: O ( m × n ) O(m \times n) O(m×n),主要在队列花销
  • 深搜: O ( m × n ) O(m \times n) O(m×n),主要在栈花销

题目

官方题目

源码

在这里插入图片描述

class Solution {
    // 
    int []dx={1,0,0,-1};
    int []dy={0,1,-1,0};
    public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
        // =======方法一,广度优先=========
        // int cur=image[sr][sc];
        // if(cur==newColor){
        //     return image;
        // }
        // Queue<int[]>queue=new LinkedList<>();
        // int n=image.length,m=image[0].length;
        // image[sr][sc]=newColor;
        // queue.offer(new int[]{sr,sc});
        // while(!queue.isEmpty()){
        //     int [] box=queue.poll();
        //     int x=box[0],y=box[1];;
        //     for(int i=0;i<4;++i){
        //         int mx=x+dx[i],my=y+dy[i];
        //         if(mx>=0 && mx<n && my>=0 &&my<m && image[mx][my]==cur){
        //             queue.offer(new int[]{mx,my});
        //             image[mx][my]=newColor;
        //         }
        //     }
        // }
        // return image;
// =======方法一,广度优先=========


// =======方法二,深度优先=========
        int cur=image[sr][sc];
        if(cur!=newColor){
            dfs(image,sr,sc,cur,newColor);
        }
        return image;
    // =======方法二,深度优先=========

    }
    // =======方法二,深度优先=========
    public void dfs(int[][]image,int sr,int sc,int curColor,int newColor){
        if(image[sr][sc]==curColor){
            image[sr][sc]=newColor;
            for(int i=0;i<4;i++){
                int mx=sr+dx[i],my=sc+dy[i];
                if(mx>=0 && mx<image.length && my >=0 && my<image[0].length){
                    dfs(image,mx,my,curColor,newColor);
                }
            }
        }
    }
    // =======方法二,深度优先=========
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值