leecode 解题总结:73. Set Matrix Zeroes
2017-02-11 23:58
302 查看
#include <iostream> #include <stdio.h> #include <vector> using namespace std; /* 问题: 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. 分析:这是程序员面试金典的一道题目。元素为0,需要将该元素所在行和列都置为0。 输入: 3(行数) 4(列数) 1 1 0 1 1 0 1 1 1 1 1 1 输出: 0 0 0 0 0 0 0 0 1 0 0 1 关键: 1 注意如果如果将所在行和列设置为0,后,再遍历矩阵,会把整个矩阵变成0. 为了避免这种情况,当遍历到某个元素为0时,先记录这个元素的行号和列号,最后再调整 需要清零的行号存入行号数组rowArr,需要清零的列号存入列号数组colArr。 下一次再遍历某个元素是A[i][j],如果rowArr[i] == 1 或者colArr[j] == 1,就设置为0 */ class Solution { public: void setZeroes(vector<vector<int>>& matrix) { if(matrix.empty()) { return ; } int row = matrix.size(); int col = matrix.at(0).size(); vector<int> rowArr(row , 0);//初始化0表示非删除标记 vector<int> colArr(col , 0); for(int i = 0 ; i < row ; i++) { for(int j = 0 ; j < col ;j++) { //遇到0元素,记录0元素的行号和列号 if(matrix.at(i).at(j) == 0) { rowArr.at(i) = 1; colArr.at(j) = 1; } } } for(int i = 0 ; i < row ; i++) { for(int j = 0 ; j < col ;j++) { //如果当前元素的行号或者列号是对应0元素的标记,就设置 if( 1 == rowArr.at(i) || 1 == colArr.at(j)) { matrix.at(i).at(j) = 0; } } } } }; void print(vector<vector<int>>& result) { if(result.empty()) { cout << "no result" << endl; return; } int size = result.size(); int len = result.at(0).size(); for(int i = 0 ; i < size ; i++) { for(int j = 0 ; j < len ; j++) { cout << result.at(i).at(j) << " " ; } cout << endl; } } void process() { int row; int col; Solution solution; vector<vector<int>> matrix; int value; while(cin >> row >> col ) { matrix.clear(); for(int i = 0 ; i < row ; i++) { vector<int> nums; for(int j = 0 ; j < col ; j++) { cin >> value; nums.push_back(value); } matrix.push_back(nums); } solution.setZeroes(matrix); print(matrix); } } int main(int argc , char* argv[]) { process(); getchar(); return 0; }
相关文章推荐
- leecode 解题总结:172. Factorial Trailing Zeroes
- leecode 解题总结:74. Search a 2D Matrix
- [LeetCode] 73. Set Matrix Zeroes 解题思路
- [Leetcode] 73. Set Matrix Zeroes 解题报告
- [leetcode] 73. Set Matrix Zeroes 解题报告
- Leet Code 73 Set Matrix Zeroes - 矩阵设置0 - Java
- leetcode[73]Set Matrix Zeroes
- 【LeetCode】Set Matrix Zeroes 解题报告
- [LeetCode]73 Set Matrix Zeroes
- [leetcode] 73.Set Matrix Zeroes
- [LeetCode 73] Set Matrix Zeroes
- 73. Set Matrix Zeroes
- leetcode_question_73 Set Matrix Zeroes
- CODE 60: Set Matrix Zeroes
- Set Matrix Zeroes - LeetCode 73
- 73.Set Matrix Zeroes
- leetcode || 73、Set Matrix Zeroes
- LeetCode 73 Set Matrix Zeroes
- LeetCode-73 Set Matrix Zeroes(设置零矩阵)
- LeetCode 73 — Set Matrix Zeroes(C++ Java Python)