LeetCode--Set Matrix Zeroes
来源:互联网 发布:南传上座部 知乎 编辑:程序博客网 时间:2024/06/05 00:28
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
click to show follow up.
Follow up:
Did you use extra space?
A straight forward solution using O(mn) space is probably a bad idea.
A simple improvement uses O(m + n) space, but still not the best solution.
Could you devise a constant space solution?
思路:标志位。这个题有三种层次的解法:
第一,复制一个新二维数组,遍历原二维数组,有0的时候新二维数组的那一行和那一列就为0;
第二,开辟一个大小为m的一维数组和大小为n的一维数组,分别记录第m行和第n列是否有数组为0,最后在设置相应行列为0;
第三,用第一行和第一列分别来记录每一列和每一行是否有0,然后再设置相应行列都为0,不过要注意先判断第一行和第一列的情况,用两个变量记录,如果第一行和第一列有0,最后第一行和第一列则全为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
- LeetCode: Set Matrix Zeroes
- LeetCode Set Matrix Zeroes
- [Leetcode] Set Matrix Zeroes
- LeetCode: Set Matrix Zeroes
- Leetcode: Set Matrix Zeroes
- [LeetCode] Set Matrix Zeroes
- [LeetCode]Set Matrix Zeroes
- [leetcode]Set Matrix Zeroes
- Leetcode:Set Matrix Zeroes
- LeetCode-Set Matrix Zeroes
- [leetcode] Set Matrix Zeroes
- LeetCode - Set Matrix Zeroes
- Set Matrix Zeroes leetcode
- 【Leetcode】Set Matrix Zeroes
- 【leetcode】Set Matrix Zeroes
- Leetcode: Set Matrix Zeroes
- Leetcode Set Matrix Zeroes
- LeetCode | Set Matrix Zeroes
- 540. Single Element in a Sorted Array(C++)
- GIT 服务器自己搭建问题记录
- 包含n个整数的数组,返回该数组和为最大的子数组
- 阿里云多应用部署记录
- 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法
- LeetCode--Set Matrix Zeroes
- JAVA学习笔记05——windows下搭建集群及session共享问题
- 作业
- (转) Linux下实时查看GPU状态
- 训练fater rcnn时出现path not exist问题
- 关于"XML 文档(2, 2)中有错误:不应有 <xml xmlns=''>"错误
- 欢迎使用CSDN-markdown编辑器
- dp动态规划分类详解
- gdb调试多线程