LeetCode之01 Matrix
来源:互联网 发布:网络文明志愿宣言 编辑:程序博客网 时间:2024/06/05 16:08
本题的题意是给定一个元素个数不超过10000的01矩阵,而且其中至少有一个0,求该矩阵中所有元素距离其最近的0的距离。其中,每个元素与其上下左右的元素之间的距离为1。
我采用BFS的思想解决此题。首先将矩阵matrix中所有等于0的坐标加入到队列中,所有等于1的元素置为一个不可能达到的距离最大值(这里取100000),意为当前所有的0都是最短距离(距离是0),所有的1到0的距离是无穷大的。然后不断地从队列中移除首元素,并将首元素坐标的四周可以更新为更短距离的坐标更新为当前的最短距离,并将该坐标加入队列尾部,直到队列为空,最后返回更新完的matrix就可以了。
class Solution {public:vector<vector<int>> updateMatrix(vector<vector<int>>& matrix) {queue<pair<int, int>> bfs;for (int i = 0; i < matrix.size(); ++i) {for (int j = 0; j < matrix[i].size(); ++j) {if (matrix[i][j] == 0) {pair<int, int> cord_0(i, j);bfs.push(cord_0);} else {matrix[i][j] = 100000;}}}while (!bfs.empty()) {pair<int, int> curr_ = bfs.front();bfs.pop();if (curr_.first - 1 >= 0 && matrix[curr_.first - 1][curr_.second] > matrix[curr_.first][curr_.second] + 1) {matrix[curr_.first - 1][curr_.second] = matrix[curr_.first][curr_.second] + 1;pair<int, int> cord_(curr_.first - 1, curr_.second);bfs.push(cord_);}if (curr_.second - 1 >= 0 && matrix[curr_.first][curr_.second - 1] > matrix[curr_.first][curr_.second] + 1) {matrix[curr_.first][curr_.second - 1] = matrix[curr_.first][curr_.second] + 1;pair<int, int> cord_(curr_.first, curr_.second - 1);bfs.push(cord_);}if (curr_.second + 1 < matrix[0].size() && matrix[curr_.first][curr_.second + 1] > matrix[curr_.first][curr_.second] + 1) {matrix[curr_.first][curr_.second + 1] = matrix[curr_.first][curr_.second] + 1;pair<int, int> cord_(curr_.first, curr_.second + 1);bfs.push(cord_);}if (curr_.first + 1 < matrix.size() && matrix[curr_.first + 1][curr_.second] > matrix[curr_.first][curr_.second] + 1) {matrix[curr_.first + 1][curr_.second] = matrix[curr_.first][curr_.second] + 1;pair<int, int> cord_(curr_.first + 1, curr_.second);bfs.push(cord_);}}return matrix;}};
阅读全文
0 0
- LeetCode之01 Matrix
- [LeetCode] BFS 之 01 Matrix
- leetcode之Spiral Matrix
- LeetCode之Spiral Matrix
- LeetCode之Spiral Matrix
- leetcode之Spiral Matrix
- 【Leetcode】之 Spiral Matrix
- LeetCode 之 Set Matrix Zeroes
- LeetCode之Spiral Matrix II
- LeetCode之Set Matrix Zeroes
- leetcode之Set Matrix Zeroes
- LeetCode之Spiral Matrix II
- LeetCode之Set Matrix Zeroes
- leetcode之Set Matrix Zeroes
- leetcode之Spiral Matrix II
- Leetcode之Set Matrix Zeroes
- LeetCode 之 Set Matrix Zeroes
- 【Leetcode】之Spiral Matrix II
- SpringMVC源码(九)SpringMVC注解开发
- 2017西安交大ACM小学期数据结构 [树状数组 离散化]
- iOS应用架构谈 开篇
- 沙盒路径(OC)
- 浅谈二进制拆分(蒟蒻已弃坑
- LeetCode之01 Matrix
- 线性表
- 允许远程访问数据库
- 数学建模--非线性规划
- Spark集群设置多Application并行执行
- HBase架构解析一
- web 框架 Django 学习记录 (二)把数据库中表内容展示在页面
- Linux下Redis安装和自启动配置
- 我的第一个hbulider项目--五子棋