LeetCode: Set Matrix Zeroes
来源:互联网 发布:linux修改启动画面 编辑:程序博客网 时间:2024/06/16 04:49
思路:用第一列和第一行的数据来作为0标记,只要M[i][j] = 0,则将M[i][0]、M[0][j] 设置为0,后面则根据第一行、第一列的0来清零。既然用第一行、第一列来进行标记了,那么需要先将第一行、第一列是否出现0保存下来。代码写的有点平凡,但是大致是这个思想。
code:
class Solution {public: void setZeroes(vector<vector<int> > &matrix) { int n = matrix.size(), m = matrix[0].size(); int flag = 0; for(int i = 0;i < n;i++) if(matrix[i][0] == 0){ flag = 1; break; } for(int j = 0;j < m;j++) if(matrix[0][j] == 0){ if(flag == 1) flag = 3; else flag = 2; break; } for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ if(matrix[i][j] == 0){ matrix[0][j] = 0; matrix[i][0] = 0; } } } for(int i = 1;i < n;i++){ if(matrix[i][0] == 0){ for(int j = 0;j < m;j++) matrix[i][j] = 0; } } for(int j = 1;j < m;j++){ if(matrix[0][j] == 0){ for(int i = 0;i < n;i++) matrix[i][j] = 0; } } if(flag != 0){ if(flag == 1) for(int i = 0;i < n;i++) matrix[i][0] = 0; if(flag == 2) for(int j = 0;j < m;j++) matrix[0][j] = 0; if(flag == 3){ for(int i = 0;i < n;i++) matrix[i][0] = 0; for(int j = 0;j < m;j++) matrix[0][j] = 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
- 用Sqlite数据库来对Android页面的数据进行增删改查
- @Control详解--Spring2.5
- 各种最短路和路径输出
- 关于HttpUrlConnection与HttpClient的选择
- <项目一>mysql中为查询出的数据添加自增序列号
- LeetCode: Set Matrix Zeroes
- Android Bitmap详细介绍
- hdu4971 流-最大权闭包
- fzoj 1559 Count Zeros(数学:推理)
- JavaScript特效制作经典精讲(案例入门详解、可直接粘贴拷贝运行、史上最牛案例)
- Bottle实例2——Request Routing
- PHP访问WebService
- 用SSH实现简单的删除操作时,id传入后台报空的问题。
- android Bitmap学习总结