【leetcode】Set Matrix Zeros

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?

 1 class Solution{
 2 public:
 3     void setZeroes(vector<vector<int> > &matrix){
 4         const size_t m=matrix.size();//row
 5         const size_t n=matrix[0].size();//col
 6         bool row_has_zero=false;
 7         bool col_has_zero=false;
 8
 9         for(size_t i=0;i<n;i++)
10         {
11             if(matrix[0][i]==0)
12             {
13                 row_has_zero=true;
14                 break;
15             }
16         }
17
18         for(size_t i=0;i<m;i++)
19         {
20             if(matrix[i][0]==0)
21             {
22                 col_has_zero=true;
23                 break;
24             }
25         }
26
27         for(size_t i=1;i<m;i++)
28         {
29             for(size_t j=1;j<n;j++)
30             {
31                 if(matrix[i][j]==0)
32                 {
33                     matrix[0][j]=0;
34                     matrix[i][0]=0;
35                 }
36             }
37
38         }
39
40         for(size_t i=1;i<m;i++)
41         {
42             for(size_t j=1;j<n;j++)
43             {
44                 if(matrix[i][0]==0||matrix[0][j]==0)
45                     matrix[i][j]=0;
46             }
47         }
48
49         if(row_has_zero)
50             for(size_t i=0;i<n;i++)
51                 matrix[0][i]=0;
52
53         if(col_has_zero)
54             for(size_t i=0;i<m;i++)
55                 matrix[i][0]=0;
56     }
57 };
时间: 2024-08-28 15:33:02

【leetcode】Set Matrix Zeros的相关文章

【LeetCode】Spiral Matrix II

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For example,Given n = 3, You should return the following matrix: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]此题与Spiral Matrix类似,可以用相同的方法解决,相比之下,此题比前一题简单 publ

【Leetcode】Set Matrix Zeroes

Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Could you devise a constant space solution? 思路:因为需要遍历整个矩阵,时间复杂度肯定需要O(m * n),对于空间复杂度而言,第一种是可以使用O(m * n),对每个位置的0的情况进行记录,第二种是使用O(m + n),对每行每列是否存在0进行记录,第三种是O(1)

【LeetCode】283. Move Zeros

题目 Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements. For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0]. Note:Yo

【LeetCode】Set Matrix Zeroes 解题报告

今天看到CSDN博客的勋章换了图表,同时也增加显示了博客等级,看起来都听清新的,感觉不错! [题目] 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) spac

【leetcode】Spiral Matrix

Spiral Matrix Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order. For example,Given the following matrix: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] You should return [1,2,3,6,9,8,7,4,5]. 如果下一步会遇到访问

【leetcode】Spiral Matrix(middle)

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order. For example,Given the following matrix: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] You should return [1,2,3,6,9,8,7,4,5]. 思路:就按照螺旋矩阵的规律 用n记录旋转圈数 每

【leetcode】Set Matrix Zeroes(middle)

Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. 思路:不能用额外空间,就用矩阵的第一行和第一列来标记这一行或这一列是否需要置0. 用两个bool量记录第一行和第一列是否需要置0 大神的代码和我的代码都是这个思路,但是我在画0的时候是行列分开处理的,大神的代码是一起处理的 void setZeroes(vector<vector<int> > &

【LeetCode】Set Matrix Zeroes (2 solutions)

Set Matrix Zeroes 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

【Leetcode】Spiral Matrix 一 和 二 in JAVA

首先是1: Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order. For example, Given the following matrix: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] You should return [1,2,3,6,9,8,7,4,5]. 我的思路是:设定一个moveSte