Set Matrix Zeroes
来源:互联网 发布:青岛齐鲁商品交易软件 编辑:程序博客网 时间:2024/06/05 21:50
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
描述:给定一个数组,如果数组中某一个位置的元素为0,则将该元素所在行和列的元素都设置为0
思路:
(1)isFirstColZero和isFirstRowZero用来标记原始没有修改的时候数组第一行和第一列是不是含有0元素,因为后序会修改数组的第一行和第一列
(2)从i=1,j=1开始遍历数组。如果nums[i][j]==0,则用nums[i][0]=0来标记第i行应该设置为0,nums[0][j]=0来标记第j行应该设置为0
(3)从i=1,j=1开始遍历数组,对于 nums[i][j],如果nums[i][0]=0或者nums[0][j]=0,则nums[i][j]应该设置为0
(4)检查isFirstColZero和isFirstRowZero来判断下是不是要将第一列和是第一行置0
class Solution {public: void setZeroes(vector<vector<int>>& matrix) { int row=matrix.size(); if(row<1) return; int col=matrix[0].size(); bool isFirstColZero=false; bool isFirstRowZero=false; for(int i=0;!isFirstRowZero&&i<col;i++) if(matrix[0][i]==0) isFirstRowZero=true; for(int i=0;!isFirstColZero&&i<row;i++) if(matrix[i][0]==0) isFirstColZero=true; for(int i=1;i<row;i++) for(int j=1;j<col;j++) { if(matrix[i][j]==0) { matrix[i][0]=0; matrix[0][j]=0; } } for(int i=1;i<row;i++) for(int j=1;j<col;j++) if(matrix[i][0]==0 || matrix[0][j]==0) matrix[i][j]=0; if(isFirstRowZero) for(int i=0;i<col;i++) matrix[0][i]=0; if(isFirstColZero) { for(int i=0;i<row;i++) matrix[i][0]=0; } return; }};
0 0
- LeetCode: Set Matrix Zeroes
- Set Matrix Zeroes
- Set Matrix Zeroes
- LeetCode Set Matrix Zeroes
- [Leetcode] Set Matrix Zeroes
- LeetCode: Set Matrix Zeroes
- Set Matrix Zeroes
- Leetcode: Set Matrix Zeroes
- [LeetCode] Set Matrix Zeroes
- Set Matrix Zeroes
- Set Matrix Zeroes
- [LeetCode]Set Matrix Zeroes
- Set Matrix Zeroes
- Set Matrix Zeroes
- Set Matrix Zeroes
- [leetcode]Set Matrix Zeroes
- Leetcode:Set Matrix Zeroes
- Set Matrix Zeroes
- 解决webView显示时候加广告问题
- iOS 证书
- jQuery获取高度问题
- 在Tomcat中部署war
- 2016云计算大会PPT打包下载
- Set Matrix Zeroes
- Socket编程------TCP文件传输(文档、声音、图片、视频和压缩包等)
- angularJS培训之$scope和controller
- Date
- 计算几何基础_1
- 201605计划安排
- 线程共享--互斥锁
- 谁在关心toString的性能?
- Elastic Search Search in Deepth