当前位置: 首页 > news >正文

leetcode hot100刷题日记——9.矩阵置零

在这里插入图片描述
在这里插入图片描述

解答一:

class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {//O(mn)额外空间,直白思想:找个和matrix一样形状的数组做vis标记数组//如果遇到了0,那就vis[i][j]=1,表明这个数组位置已经被用过了//不会出现:如示例1中,遍历到第二行第二列0时,把第二行和第二列所有数字变成0//下一个遍历第二行第三列,已经在上一步中变成0了//你要是不做标记,那也会把第三列所有数变成0,那就错了//但是,注意示例2又提醒了我们另一种情况//当两个0在同一行时候,如果你在遍历到第二个0的时候,vis是1//那么他就会跳过这个0,不把第四列变成0了//所以在进行vis更新前,我们需要判断一下这个数是不是原本就是0//如果原本就是0的话,vis就依旧是0int m=matrix.size();int n=matrix[0].size();vector<vector<int>> vis(m,vector<int>(n));for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(matrix[i][j]==0&&vis[i][j]==0){for(int k=0;k<n;k++){if(matrix[i][k]!=0){vis[i][k]=1;}matrix[i][k]=0; }for(int k=0;k<m;k++){if(matrix[k][j]!=0){vis[k][j]=1;}matrix[k][j]=0;}}}}return;}
};

时间复杂度:O(mn)
空间复杂度:O(mn)

解答二:

class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {//O(m+n)额外空间:一个数组存行位置,一个数组存列位置int mm=matrix.size();int nn=matrix[0].size();vector<int> m(mm);vector<int> n(nn);for(int i=0;i<mm;i++){for(int j=0;j<nn;j++){//把所有是0的数的行位置和列位置记录下来if(matrix[i][j]==0){m[i]=n[j]=1;}}}for(int i=0;i<mm;i++){for(int j=0;j<nn;j++){if(m[i]!=0||n[j]!=0){//只要行有0或者列有0就直接变0matrix[i][j]=0;}}}}
};

时间复杂度:O(mn)
空间复杂度:O(m+n)

相关文章:

  • 【小乌龙问题】stm32供电,用过的ch340缺无法被识别
  • [安装并使用Milvus_CLI]
  • 开疆智能Profinet转RS485网关连接富士电机配置案例
  • 对Web界面进行简单自动化测试Selenium
  • 基于多目标优化的样本调度适应度函数设计
  • 力扣小题, 力扣113.路径总和II力扣.111二叉树的最小深度 力扣.221最大正方形力扣5.最长回文子串更加优秀的算法:中心扩展算法
  • 获取印度股票市场API
  • Java使用CollectionUtils集合工具类
  • Unity Shader入门(更新中)
  • Lucide:一款精美的开源矢量图标库,前端图标新选择
  • RS485转PROFINET:让废水处理从“人工监控”到“智能管控”​​
  • PyQt学习系列02-模型-视图架构与数据管理
  • DOM API-JS通过文档对象树操作Doc和CSS
  • 其他有关Oracle BUFFER CACHE的优化思路
  • Go语言之Map 的基本操作-《Go语言实战指南》
  • LeetCode 257. 二叉树所有路径求解:回溯算法的深度解析与实践
  • MySQL中InnoDB引擎逻辑存储结构、B+树索引结构、B+树高度及存储数据量
  • 前端父元素flex布局设置左右padding时,input溢出父元素右内边距无效
  • 我的世界模组开发——物理学(1)
  • VPLC (VPLCnext) K8S
  • 防城港网站建设/2023年最新新闻简短摘抄
  • 设计类网站策划案/自媒体seo优化
  • 网站推广营销联系方式/淘宝指数查询官网
  • 国外做微课的网站/常用的搜索引擎有哪些?
  • 做互联网小程序 和网站有没有前景/网络广告营销
  • 工装公司和家装公司的区别/seo专员工作内容