zoukankan      html  css  js  c++  java
  • 73. 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.

    Example 1:

    Input: 
    [
      [1,1,1],
      [1,0,1],
      [1,1,1]
    ]
    Output: 
    [
      [1,0,1],
      [0,0,0],
      [1,0,1]
    ]
    

    Example 2:

    Input: 
    [
      [0,1,2,0],
      [3,4,5,2],
      [1,3,1,5]
    ]
    Output: 
    [
      [0,0,0,0],
      [0,4,5,0],
      [0,3,1,0]
    ]
    

    Follow up:

    • 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?
     
    my code:
    class Solution {
    public:
        void setZeroes(vector<vector<int>>& matrix) {
            int row = matrix.size();
            int col = matrix[0].size();
            vector<int> r;
            vector<int> c;
            for (int i = 0; i < row; ++i) {
                for (int j = 0; j < col; ++j) {
                    if (matrix[i][j] == 0) {
                        r.push_back(i);
                        c.push_back(j);
                    }
                        
                }
            }
            for (int i = 0; i < r.size(); ++i) {
                int x = r[i];
                int y = c[i];
                for (int j = 0; j < col; ++j) {
                    matrix[x][j] = 0;
                }
                for (int j = 0; j < row; ++j) {
                    matrix[j][y] = 0;
                }
            }
        }
    };
    

    Runtime: 36 ms, faster than 90.90% of C++ online submissions for Set Matrix Zeroes.

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    小甲鱼与客服的对话,代码与解析
    (role,line_spoken) = each_line.split(':',2) 小甲鱼python 一个任务
    python open() 方法 No such file or directory: 应该怎么解决
    并发编程
    并发编程
    并发编程
    并发编程
    并发编程
    并发编程
    并发编程
  • 原文地址:https://www.cnblogs.com/h-hkai/p/9839195.html
Copyright © 2011-2022 走看看