73. Set Matrix Zeroes
来源:互联网 发布:淘宝便利店 编辑:程序博客网 时间:2024/05/22 07:56
这道题要求将矩阵内含有零的行和列全部置零。
我的方法是扫描矩阵三遍,第一遍把需要置0的行号和列号存下来,第二遍和第三遍分别把行和列置0.
class Solution {public: void setZeroes(vector<vector<int>>& matrix) { if(matrix.empty() || matrix[0].empty()) return; set<int> rows; set<int> cols; for(int i = 0; i < matrix.size(); ++i){ for(int j = 0; j < matrix[0].size(); ++j){ if(matrix[i][j] == 0){ rows.insert(i); cols.insert(j); } } } for(int i = 0; i < matrix.size(); ++i){ if(rows.find(i) != rows.end()){ for(int j = 0; j < matrix[0].size(); ++j){ matrix[i][j] = 0; } } } for(int j = 0; j < matrix[0].size(); ++j){ if(cols.find(j) != cols.end()){ for(int i = 0; i < matrix.size(); ++i){ matrix[i][j] = 0; } } } }};
如果要求的空间复杂度是O(1),则可以把原数组的第一行第一列来记录各行各列是否有0.
class Solution {public: void setZeroes(vector<vector<int> > &matrix) { if (matrix.empty() || matrix[0].empty()) return; int m = matrix.size(), n = matrix[0].size(); bool rowZero = false, colZero = false; for (int i = 0; i < m; ++i) { if (matrix[i][0] == 0) colZero = true; } for (int i = 0; i < n; ++i) { if (matrix[0][i] == 0) rowZero = true; } for (int i = 1; i < m; ++i) { for (int j = 1; j < n; ++j) { if (matrix[i][j] == 0) { matrix[0][j] = 0; matrix[i][0] = 0; } } } for (int i = 1; i < m; ++i) { for (int j = 1; j < n; ++j) { if (matrix[0][j] == 0 || matrix[i][0] == 0) { matrix[i][j] = 0; } } } if (rowZero) { for (int i = 0; i < n; ++i) matrix[0][i] = 0; } if (colZero) { for (int i = 0; i < m; ++i) matrix[i][0] = 0; } }};
阅读全文
0 0
- 73.Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes
- 设置精灵
- eclipse 配置 Maven
- 258. Add Digits
- mtk otg代码阅读笔记
- 通过先序遍历和中序遍历建立二叉树
- 73. Set Matrix Zeroes
- c++基础之类的封装
- python numpy中数组.min()
- SpringMVC学习之简单示例(非注解)
- Python之正则表达式入门
- sleep和wait的区别
- 标称型和数值型数据
- oracle查看被锁的表和解锁
- LWC 56:718. Maximum Length of Repeated Subarray