leetcode 刷题之路 46 Set Matrix Zeroes
来源:互联网 发布:西安星河网络小贷 编辑:程序博客网 时间:2024/06/08 08:21
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所在行和列的元素都清零,要求常数空间复杂度完成 这个问题。
首先判断第一行和第一列中是否有含0的数字,设置两个变量isRow1Zero,isClmn1Zero来记录。然后使用第一行和第一列来作为临时记录空间,遍历整个矩阵,对于遍历到的数字0,将它所在行和列的行首和列首改为0。遍历完成后,哪些行和列最终要清零其实已经保存到了矩阵第一行和第一列,接下来遍历第一行,将第一行中数字0所处的列清零,遍历第一列,将第一列中数字0所处的行清零,最后再根据isRow1Zero,isClmn1Zero的值对第一行和第一列进行处理。
AC code:
class Solution {public: void setZeroes(vector<vector<int> > &matrix) { int isRow1Zero=0,isClmn1Zero=0; for(int i=0;i<matrix.size();i++) if(matrix[i][0]==0) isClmn1Zero=1; for(int i=0;i<matrix[0].size();i++) if(matrix[0][i]==0) isRow1Zero=1; for(int i=0;i<matrix.size();i++) for(int j=0;j<matrix[0].size();j++) if(matrix[i][j]==0) { matrix[i][0]=0; matrix[0][j]=0; } for(int i=1;i<matrix.size();i++) if(matrix[i][0]==0) { for(int j=1;j<matrix[0].size();j++) matrix[i][j]=0; } for(int i=1;i<matrix[0].size();i++) { if(matrix[0][i]==0) { for(int j=1;j<matrix.size();j++) { matrix[j][i]=0; } } } if(isRow1Zero==1) { for(int i=0;i<matrix[0].size();i++) matrix[0][i]=0; } if(isClmn1Zero==1) { for(int i=0;i<matrix.size();i++) matrix[i][0]=0; } }};
0 0
- leetcode 刷题之路 46 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
- LeetCode Set Matrix Zeroes
- [Leetcode] Set Matrix Zeroes
- LeetCode: Set Matrix Zeroes
- Leetcode: Set Matrix Zeroes
- [LeetCode] Set Matrix Zeroes
- [LeetCode]Set Matrix Zeroes
- POJ 2449 Remmarguts' Date K短路
- 09: Neural Networks - Learning
- 模拟电路-释疑
- python中类的创建,父子类的继承
- 在O(1)时间删除链表结点--总结
- leetcode 刷题之路 46 Set Matrix Zeroes
- java连接mongodb数据库
- 面向.Net程序员的前端优化
- 字符理论--Unicode详解
- Java经典算法大全
- Count on Canton
- Objective-C NSString
- android soundrecorder之三 录音流程及数据流向
- 获取、设置声卡音量的方法