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)
  • 相关阅读:
    Fundamentals of Garbage Collection
    CLR的八大特性
    Navigation and Pathfinding
    Work-Stealing in .NET 4.0
    Graphics.Blit
    整数的可除性
    关于强度
    重心坐标空间
    性能测试中TPS和并发用户数
    LoadRunner 12.02 安装以及汉化教程
  • 原文地址:https://www.cnblogs.com/h-hkai/p/9839195.html
Copyright © 2011-2022 走看看