有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。

给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。

为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值改为新的颜色值。

最后返回经过上色渲染后的图像。

示例 1:

输入:
image = [[1,1,1],[1,1,0],[1,0,1]]
sr = 1, sc = 1, newColor = 2
输出: [[2,2,2],[2,2,0],[2,0,1]]
解析:
在图像的正中间,(坐标(sr,sc)=(1,1)),在路径上所有符合条件的像素点的颜色都被更改成2。
注意,右下角的像素没有更改为2,因为它不是在上下左右四个方向上与初始点相连的像素点。

注意:

  • image 和 image[0] 的长度在范围 [1, 50] 内。
  • 给出的初始点将满足 0 <= sr < image.length 和 0 <= sc < image[0].length
  • image[i][j] 和 newColor 表示的颜色值在范围 [0, 65535]内。

DFS

很简单的一道题,深度优先搜索就好。

Code

 def floodFill(self, image: List[List[int]], sr: int, sc: int, newColor: int) -> List[List[int]]:def dfs(x, y):if not (-1 < x < len(image) and -1 < y < len(image[0]) and image[x][y] == oldColor):returnimage[x][y] = newColorfor dx, dy in dirs:nx, ny = x + dx, y + dydfs(nx, ny)dirs = [(1, 0), (0, 1), (-1, 0), (0, -1)]oldColor = image[sr][sc]if oldColor != newColor:dfs(sr, sc)return image

复杂度分析

  • 时间复杂度:O(n×m)O(n\times m)O(n×m),其中 nnn 和 mmm 分别是二维数组的行数和列数。最坏情况下需要遍历所有的方格一次。
  • 空间复杂度:O(n×m)O(n\times m)O(n×m),其中 nnn 和 mmm 分别是二维数组的行数和列数。主要为栈空间的开销。

733. Flood Fill 图像渲染相关推荐

  1. [Leetcode][第733题][JAVA][图像渲染][BFS][DFS]

    [问题描述][简单] [解答思路] 千万不要想复杂了 不是三维空间 是一维空间 ! 本题要求将给定的二维数组中指定的「色块」染成另一种颜色.「色块」的定义是:直接或间接相邻的同色方格构成的整体. 可以 ...

  2. 733.图像渲染(主讲题意)

    有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间. 给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newCol ...

  3. LeetCode 733. 图像渲染(DFS/BFS)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间. 给你一个坐标 (sr ...

  4. LeetCode(733)——图像渲染(JavaScript)

    有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间. 给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newCol ...

  5. 算法介绍 | 泛洪算法(Flood fill Algorithm)

    算法别名: 漫水填充算法.种子填充算法(Seed Fill) 作用: 用于确定连接到多维数组中给定节点的区域,可以用来标记或者分离图像的一部分,实现如Ps中自动选区功能. 基本思想: 顾名思义就像洪水 ...

  6. LeetCode简单题之图像渲染

    题目 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间. 给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 new ...

  7. 上帝视角任意切换:三维重建和图像渲染是怎么结合的?

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 导读 本文介绍了3D图像网站Photo Synth及其前身Photo Tourism,并讲解了它们的两 ...

  8. IOS之未解问题--关于IOS图像渲染CPU和GPU

    前言:先上一个图.关于UIKit底层渲染机制,这个有待以后花大把时间收集资料和学习,然后汇总,将整篇"未解问题"去除. 反思:半个月前阿里电话面试,问道一个问题图像渲染什么时候回用 ...

  9. LeetCode Number of Islands(flood fill)

    问题:给出一个由0和1组成的二维网格图(m*n),1表示陆地,0表示水.要求统计有多少块陆地 思路:常见的flood fill算法有三种,深度优先搜索.广度优先搜索以及广度扫描法.广度扫描法其实原理与 ...

最新文章

  1. AI每日精选:新加坡批准AI血管超声扫描;蔚来硅谷裁员141人
  2. 为清理助手制作便利工具的技术实现
  3. C# 简单的XML读取修改写入
  4. word List 48
  5. 如何提高阿里云上应用的可用性(二)
  6. java 校验护照_【示例教程】如何使用LEADTOOLS 的JAVA接口从护照中识别和提取数据...
  7. 织梦dedecms模板--物流快递网站模板源码-带手机版数据同步
  8. 用学生编程记录预测学习成果,第二届计算机教育数据挖掘大赛, 赢取现金奖励+顶刊发表机会!...
  9. ubuntu14.04安装vnc
  10. 【Git/Github学习笔记】ubuntu系统下使用git命令与windows下的差别
  11. 【脑电信号】基于matlab小波变换睡眠脑电信号监测【含Matlab源码 595期】
  12. 读取敏感词库内容,讲某段字符里面的敏感词替换成*
  13. ubuntu设置虚拟显示器且远程连接
  14. 阿里AndFix与sophix热修复原理解析
  15. 《惢客创业日记》2019.01.23(周三) 太苦涩的人生也会让人麻木
  16. android 发送UDP广播,搜寻服务器建立socket链接
  17. Centos7__CA认证
  18. STM32通过SPI读W25Q64的ID时钟分析
  19. debug基本命令及全称
  20. Python/numpy 设置数组某一整行列的值为0/1 修改数组行列设置为特定值

热门文章

  1. poj2154Color polya定理+欧拉函数优化
  2. BZOJ 2208[Jsoi2010]连通数
  3. Oracle推出5TB磁带 成就EB级磁带库
  4. SuperMap产权登记管理平台
  5. Remoting系列(二)----建立第一个入门程序
  6. 上海有哪些计算机技术专科学校,上海计算机专业大学排名,第一名居然是这所大学!...
  7. dhtml是基于html的一门语言,什么是DHTML
  8. 时结果 hive_Hive优化
  9. cbc cryptojs 前后端_前端CryptoJS AES/DES加解密与后端PHP AES/DES加解密
  10. sqlalchemy 基操,勿6