zoukankan      html  css  js  c++  java
  • 矩阵置零

    leecode一道题目:
    给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法

    输入: 
    [
      [1,1,1],
      [1,0,1],
      [1,1,1]
    ]
    输出: 
    [
      [1,0,1],
      [0,0,0],
      [1,0,1]
    ]

    进阶:

    • 一个直接的解决方案是使用  O(mn) 的额外空间,但这并不是一个好的解决方案。
    • 一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。
    • 你能想出一个常数空间的解决方案?

    直接的想法是用哈希表存储需要置零的行列。

    class Solution {
    public:
        void setZeroes(vector<vector<int>>& matrix) {
            unordered_map<int, int> rows;
            unordered_map<int, int> cols;
        
            for(int i = 0; i < matrix.size(); i++)
            {
                for(int j = 0; j < matrix[i].size(); j++)
                {
                    if(matrix[i][j] == 0) {
                        rows.insert(make_pair(i, 0));
                        cols.insert(make_pair(j, 0));
                    }
                }
            }
            for(auto &p : rows)
            {
                int row = p.first;
               
                for(int i = 0; i < matrix[0].size(); i++)
                {
                    matrix[row][i] = 0;
                }
             
            }
            for(auto &p : cols)
            {
                int col = p.first;   
                for(int i = 0; i < matrix.size(); i++)
                {
                    matrix[i][col] = 0;
                }   
            }
        }
    };
    The Safest Way to Get what you Want is to Try and Deserve What you Want.
  • 相关阅读:
    多项输入
    输出多项数据
    圆的面积
    计算并显示
    半径计算圆的周长和面积
    三角形的面积
    显示数据二进制形式
    将一批数据以二进制形式存放在磁盘文件中
    读入字符存入磁盘文件
    数组送到磁盘文件存放
  • 原文地址:https://www.cnblogs.com/Shinered/p/9726705.html
Copyright © 2011-2022 走看看