LeetCode - Set Matrix Zeros
来源:互联网 发布:淘宝小号供货商 编辑:程序博客网 时间:2024/06/01 09:01
需要o(m+n)空间的方法不再赘述
我的想法是利用第一行和第一列作为某一行或者某一列需要清零的标记,比如说假如matrix[i][0] == 0,那么第i行就需要清零,如果matrix[0][j] == 0,那么第j列就需要清零。
带来的问题是第一行或者第一列需要清零的话怎么办?就采用两个bool值标记第一行以及第一列是否需要清零。
class Solution {public: void setZeroes(vector<vector<int>>& matrix) { int height = matrix.size(); if (0 == height) return; int width = matrix[0].size(); if (0 == width) return; bool firstRow = false; bool firstLine = false; for (int i = 0 ; i < height ; ++i) { if (0 == matrix[i][0]) { firstLine = true; break; } } for (int j = 0 ; j < width ; ++j) { if (0 == matrix[0][j]) { firstRow = true; break; } } for (int i = 1 ; i < height ; ++i) { for (int j = 1 ; j < width ; ++j) { if (0 == matrix[i][j]) matrix[0][j] = matrix[i][0] = 0; } } for (int i = 1 ; i < height ; ++i) { if (0 == matrix[i][0]) { for (int j = 1 ; j < width ; ++j) matrix[i][j] = 0; } } for (int j = 1 ; j < width ; ++j) { if (0 == matrix[0][j]) { for (int i = 1 ; i < height ; ++i) matrix[i][j] = 0; } } if (firstRow) { for (int j = 0 ; j < width ; ++j) matrix[0][j] = 0; } if (firstLine) { for (int i = 0 ; i < height ; ++i) matrix[i][0] = 0; } }};
leetcode讨论区排名第一的解法,利用matrix[0][0]标记第一列是否需要清零,这样就只需要一个额外的bool变量就可以了。
https://leetcode.com/discuss/15997/any-shortest-o-1-space-solution
0 0
- [LeetCode] Set Matrix Zeros
- [Leetcode] Set Matrix Zeros
- 【Leetcode】Set matrix zeros
- LeetCode - Set Matrix Zeros
- LeetCode---set-matrix-zeros
- [LeetCode] Set Matrix Zeros
- LeetCode--Set matrix zeros
- LeetCode 73:Set Matrix Zeros
- LeetCode - 73. Set Matrix Zeros
- leetcode-73 set matrix zeros
- LeetCode 题解(21): Set Matrix Zeros
- LeetCode刷题(39)--Set Matrix Zeros
- Set Matrix Zeros
- set matrix zeros
- set matrix zeros
- leetcode_073 Set Matrix Zeros
- 73-Set Matrix Zeros
- leetcode 73 Set Matrix Zeros 矩阵置零
- VPN代理推荐
- java 多线程实践
- Theano基础(一)
- tar命令
- Android 使用百度LBS SDK(四)
- LeetCode - Set Matrix Zeros
- 后台管理引入jQuery,使用ajax是提示"$.ajax无效..."
- 深入浅出: Java回调机制(异步)
- 使用 https 安全协议方法
- log4j在项目中的使用
- PHP 区分测试环境 生产环境的方法 环境变量
- http协议(一)
- FacebookSDK for Android in eclipse
- Android客户端与PC服务端之间的SOCKET实现登陆功能(服务器)