第十五周:( LeetCode542) 01 Matrix(c++)
来源:互联网 发布:ug8.0编程手机教程 编辑:程序博客网 时间:2024/06/05 07:02
原题:
Given a matrix consists of 0 and 1, find the distance of the nearest 0 for each cell.
The distance between two adjacent cells is 1.
Example 1:
Input:
0 0 0
0 1 0
0 0 0
Output:
0 0 0
0 1 0
0 0 0
Example 2:
Input:
0 0 0
0 1 0
1 1 1
Output:
0 0 0
0 1 0
1 2 1
Note:
The number of elements of the given matrix will not exceed 10,000.
There are at least one 0 in the given matrix.
The cells are adjacent in only four directions: up, down, left and right.
思路:题目的意思是找出矩阵中非0的点和最近的0点的距离,已知上、下、左、右四个方向相邻的点的距离为1。其实就是逐个点做个广度优先搜索。
代码:
class Solution {public: int bfs(int x,int y,vector<vector<int>>& matrix,int m,int n){ int distance=0; queue<pair<pair<int,int>,int>> q; q.push(make_pair(make_pair(x,y),distance)); while(!q.empty()){ x=q.front().first.first; y=q.front().first.second; distance=q.front().second; if(matrix[x][y]==0) return distance; if(x-1>=0) q.push(make_pair(make_pair(x-1,y),distance+1)); if(y-1>=0) q.push(make_pair(make_pair(x,y-1),distance+1)); if(x+1<m) q.push(make_pair(make_pair(x+1,y),distance+1)); if(y+1<n) q.push(make_pair(make_pair(x,y+1),distance+1)); q.pop(); } } vector<vector<int>> updateMatrix(vector<vector<int>>& matrix) { int m=matrix.size(); if(m==0) return matrix; int n=matrix[0].size(); for(int i=0;i<m;i++) for(int j=0;j<n;j++) if(matrix[i][j]!=0) matrix[i][j]=bfs(i,j,matrix,m,n); return matrix; }};
阅读全文
0 0
- 第十五周:( LeetCode542) 01 Matrix(c++)
- leetcode542. 01 Matrix
- LeetCode542. 01 Matrix题解
- leetcode542
- 第十五周:( LeetCode547) Friend Circles(c++)
- 第十五周:( LeetCode565) Array Nesting(c++)
- 第十五周-C语言 项目一(数组大折腾)
- 第十五周—C语言 项目3(二维数组)
- 第十五周—C语言 项目4 (矩阵运算)
- 周报(第十五周)
- 第十五周项目——oj c
- 第十五周-C语言习题 字符串长度
- 第十五周-C语言习题 字符串比较
- 第十五周-OJ-C字符串逆序输出
- 第十五章,读取txt文件(C++)
- C和指针读书笔记(第十五章)
- 第十五课、C数组(一维)
- 算法第十五周作业01
- window.location.href("url") 无法在chrome和Firefoxz中使用
- Android Studio导入项目问题
- Windows-yii2学习(安装篇)
- 程序员面试金典——子串判断
- [转]Tomcat目录映射
- 第十五周:( LeetCode542) 01 Matrix(c++)
- Struts2的Action使用
- 怎么配置无线路由器
- idea 中文乱码 & fedora 25安装字体
- JAVA的23种设计模式---备忘录模式(二)
- SQL索引创建原则、创建与删除示例
- java多线程总结(1)
- 关于C++流的缓冲区的讨论
- div同步滚动js