| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> Leetcode0733. 图像渲染(simple) -> 正文阅读 |
|
[数据结构与算法]Leetcode0733. 图像渲染(simple) |
目录 1. 题目描述有一幅以? 你也被给予三个整数? 为了完成?上色工作?,从初始像素开始,记录初始坐标的?上下左右四个方向上?像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应?四个方向上?像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值改为? 最后返回?经过上色渲染后的图像?。 示例 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,因为它不是在上下左右四个方向上与初始点相连的像素点。 示例 2: 输入: image = [[0,0,0],[0,0,0]], sr = 0, sc = 0, newColor = 2 输出: [[2,2,2],[2,2,2]] 提示:
来源:力扣(LeetCode) 2. 解题分析????????把整幅图像看作是一个图(Graph, instead of picture)从起点开始,采用广度优先搜索的方式对整个。 ? ? ? ? 每个像素为一个节点,其邻接点即为其上下左右邻接的像素点(除了已经访问过的以外)。这里要注意的是,这个Graph并不是已经存在,而是在遍历的过程中构建出来。 ? ? ? ? 需要visited记录已经访问过的节点(像素),由于并不需要跟踪深度、或者层数、或者最短路径之类的信息,单纯地就是记录是否访问过,所以可以用set来实现visited(set和dict都是哈希方式,查询效率相当)。? ? ? ? ???????? ? ? ? ? 【复杂度分析】 ????????时间复杂度:O(n×m),其中 n 和 m 分别是二维数组的行数和列数。最坏情况下需要遍历所有的方格一次。 ????????空间复杂度:O(n×m),其中 n 和 m 分别是二维数组的行数和列数。主要为队列的开销。 3. 代码实现
????????执行用时:44 ms, 在所有?Python3?提交中击败了28.41%的用户 ????????内存消耗:15.2 MB, 在所有?Python3?提交中击败了21.47%的用户 ????????虽然性能有点拉跨但是好歹是一次性通过的。?? ? ? ? ? 以上代码有点冗长,主要是边界判断比较麻烦。实际上这一类问题的通常的简化边界判断的做法是外面加一层围栏,围栏中的值填入对于image而言的非法值,这样代码中分别用于上下左右判断的4个if...语句块可以用一个for-loop来表现。 ? ? ? ? 另外一个可以改进的地方是,可以省掉visited。因为已经访问过的像素就已经被设成新的颜色了。而且,如果起始点的当前颜色与newColor相同的话,就不需要任何操作直接返回即可。 ? ? ? ? 由于是图的遍历,本题也可以用深度优先搜索来解决。 ? ? ? ? 回到主目录:笨牛慢耕的Leetcode解题笔记(动态更新。。。) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:00:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |