LeetCode 542. 01 矩阵
2020-04-15 16:09:50来源:博客园 阅读 ()
LeetCode 542. 01 矩阵
我的LeetCode:https://leetcode-cn.com/u/ituring/
我的LeetCode刷题源码[GitHub]:https://github.com/izhoujie/Algorithmcii
LeetCode 542. 01 矩阵
题目
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。
两个相邻元素间的距离为 1 。
示例 1:
输入:
0 0 0
0 1 0
0 0 0
输出:
0 0 0
0 1 0
0 0 0
示例 2:
输入:
0 0 0
0 1 0
1 1 1
输出:
0 0 0
0 1 0
1 2 1
注意:
- 给定矩阵的元素个数不超过 10000。
- 给定矩阵中至少有一个元素是 0。
- 矩阵中的元素只在四个方向上相邻: 上、下、左、右。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/01-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
本题比较直接想到的是BFS和DFS,另外还有dp不容易想到;
图解:
思路1-BFS
- 把所有的0位置当作同源起始搜索位置往内层bfs;
算法复杂度:(N为数组的元素总数)
- 时间复杂度: $ {\color{Magenta}{\Omicron\left(N\right)}} $
- 空间复杂度: $ {\color{Magenta}{\Omicron\left(N\right)}} $
思路2-DFS
- 把最外层的1当作DFS的同源起始位置,可以减少递归栈的深度,因为BFS时外层的0只会做一次判断,但是DFS时,外层的0会互相进入递归,而这样的递归是无意义的;
算法复杂度:(N为数组的元素总数)
- 时间复杂度: $ {\color{Magenta}{\Omicron\left(N\right)}} $
- 空间复杂度: $ {\color{Magenta}{\Omicron\left(N\right)}} $
思路3-dp动态规划,从左上角到右下角往复扫描一次
- 第一次扫描遇到非0位置先给最大路径,然后再左上收敛;
- 第二次扫描从右下再收敛一遍;
算法复杂度:(N为数组的元素总数)
- 时间复杂度: $ {\color{Magenta}{\Omicron\left(N\right)}} $
- 空间复杂度: $ {\color{Magenta}{\Omicron\left(1\right)}} $
算法源码示例
原文链接:https://www.cnblogs.com/izhoujie/p/12708457.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:模拟CMD操作文件(夹)
- LeetCode 287. 寻找重复数 2020-05-31
- LeetCode 5. 最长回文子串 2020-05-22
- LeetCode 21. 合并两个有序链表 2020-05-22
- LeetCode 面试题55 - I. 二叉树的深度 2020-05-22
- LeetCode 104. 二叉树的最大深度 2020-05-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash