LeetCode 73. Set Matrix Zeroes

Solution1:我的答案
比较笨,算法时间复杂度是O(mn)O(mn)O(mn),占用额外空间是O(m+n)O(m+n)O(m+n)

class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {if(matrix.size() * matrix[0].size() == 0)return;vector<int> row;    //某行有0则为truevector<int> col;    //某列有0则为truefor (int i = 0; i < matrix.size(); i++) { for (int j = 0; j < matrix[0].size(); j++) {if (matrix[i][j] == 0) {if(find(row.begin(), row.end(), i) == row.end())row.push_back(i);if(find(col.begin(), col.end(), j) == col.end())col.push_back(j);}}}for (int i = 0; i < row.size(); i++) for (int j = 0; j < matrix[i].size(); j++)matrix[row[i]][j] = 0;for (int j = 0; j < col.size(); j++) for (int i = 0; i < matrix.size(); i++)matrix[i][col[j]] = 0;return;}
};

Solution2:空间复杂度优化
利用第一行第一列做记录
比较笨,算法时间复杂度是O(mn)O(mn)O(mn),占用额外空间是O(1)O(1)O(1)

class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {int m = matrix.size(), n = matrix[0].size();bool row_zero = false, col_zero = false;for (int i = 0; i < n; i++) {if (matrix[0][i] == 0) {row_zero = true;break;}   }for (int i = 0; i < m; i++) {if (matrix[i][0] == 0) {col_zero = true;break;} }for (int i = 1; i < m; i++) { for (int j = 1; j < n; j++) {if (matrix[i][j] == 0) {matrix[i][0] = 0;matrix[0][j] = 0;}}}for (int i = 1; i < m; i++)for (int j = 1; j < n; j++)if(matrix[i][0] == 0 || matrix[0][j] == 0)matrix[i][j] = 0;if (row_zero) {for (int i = 0; i < n; i++)matrix[0][i] = 0;}if (col_zero) {for (int i = 0; i < m; i++)matrix[i][0] = 0;}return;}
};

LeetCode 73. Set Matrix Zeroes相关推荐

  1. LeetCode (73): Set Matrix Zeroes

    链接: https://leetcode.com/problems/set-matrix-zeroes/ [描述] Given a m x n matrix, if an element is 0, ...

  2. 【leetcode】Set Matrix Zeroes(middle)

    Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. 思路:不能用 ...

  3. leetcode 73 矩阵置零 C++ 两种解法

    leetcode 73 两种解法~~,没有一个是我想出来的,哈哈~~ one class Solution {public:void setZeroes(vector<vector<int ...

  4. [东哥的leetcode刷题日记] leetcode 283 : Move Zeroes

    leetcode 283 : Move Zeroes 题目链接: https://leetcode-cn.com/problems/move-zeroes/ 难度: 简单 归类 : 数组操作 题目: ...

  5. LeetCode 59 Spiral Matrix II(螺旋矩阵II)(Array)

    版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/5214 ...

  6. Set Matrix Zeroes

    Set Matrix Zeroes Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do i ...

  7. LeetCode 474. Ones and Zeroes 动态规划解法+拓展

    问题来源 此题来源于LeetCode 474. Ones and Zeroes 在写这篇之前,我百度了一下这道题,发现已经有很多人写过这个问题了,然而大多数只是为了答题而答题,给出了代码,很少有文字解 ...

  8. LeetCode: 868. Transpose Matrix

    LeetCode: 868. Transpose Matrix 题目描述 Given a matrix A, return the transpose of A. The transpose of a ...

  9. LeetCode 172. Factorial Trailing Zeroes

    LeetCode 172. Factorial Trailing Zeroes 问题来源LeetCode 172. Factorial Trailing Zeroes 问题描述 Given an in ...

最新文章

  1. 合并表格,并实现对datatable的group by 功能
  2. 数据结构-二叉排序树
  3. Java EE 8 MVC:使用bean参数
  4. java后端做教育视频网站源码_【Java并发面试点】看这一篇应该是够了
  5. Ajax网络超时和和网络异常
  6. 华为access、trunk、hybird接口从tag和untag进行了解。
  7. 贴片电阻各种封装规格及阻值标注方法
  8. _initialize() 区别 __construct()
  9. 不要因为错爱而寂寞一生
  10. L5 Limits and Continuity
  11. 如何关闭计算机自动关机设置方法,电脑自动关机怎么设置(自动关机设置及取消方...
  12. npm install报错214 verbose node v14.15.0 215 verbose npm v7.23.0
  13. LeaRun快速开发平台,快速开发.net/java项目
  14. 力扣简单题合集(带答案)
  15. 题解 [SP4354][AcWing137]TWINSNOW - Snowflakes/雪花雪花雪花
  16. Qt 之 中英文切换的使用
  17. 盘点程序员逃离一线的Plan B
  18. js中call 的使用, call方法的继承
  19. 1.1 Java基础(一)概述
  20. mysql 谓语提前_表语谓语提前是什么倒装把这两种提前是部分倒装还是完全倒装,还是别的什么倒装?请问...

热门文章

  1. Xfire的aegis绑定方式配置小结
  2. 迭代近邻算法Iterative Closest Point, ICP
  3. Factory Pattern工厂模式
  4. select 实现类似多线程_linux进程通信--socket套接字(四)--多路IO转实现一个server对应多个client...
  5. linux session 设置时间设置,设置linux系统history相关变量,命令时间、保存history条数,多session共享history...
  6. 通过CMD命令行获取文件夹下的所有文件名称(电脑小白专用)
  7. php admin_priv,ECshop后台开发模块步骤
  8. mysql表索引类型修改_MySQL常用的建表、添加字段、修改字段、添加索引SQL语句写法总结...
  9. 高中计算机竞赛教案,信息技术教学案例评比——选择排序的算法实现(金华第一中学)...
  10. octave与matlab语法,Octave与Matlab