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

矩阵置零C++

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

思路:
1、让首行首列记录哪一行哪一列有0
2、于是可以直接遍历非首行首列的元素,若该元素对应的首行首列为0,说明该元素最后还是需要置0
3、由于首行首列还需要记录哪一行哪一列有0,所以第1步和第2步可能会有冲突,于是加入两个bool量,标志首行首列是否有0

class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {int m = matrix.size();  // 行数if(m==0)return;int n = matrix[0].size(); // 列数bool row = false, col = false;// 先完成标记首行首列是否有0// 检查首列是否有0for(int i=0; i<m; i++){if(matrix[i][0] == 0){col = true;break;}      }// 检查首行是否有0for(int j=0; j<n; j++){if(matrix[0][j] == 0){row = true;break;}}// 完成第一步for(int i=1; i<m; i++){for(int j=1; j<n; j++){if(matrix[i][j] == 0){// 首行首列置0matrix[0][j] = 0;matrix[i][0] = 0;}}}// 完成第二步for(int i=1; i<m; i++){for(int j=1; j<n; j++){if(matrix[0][j]==0 || matrix[i][0] == 0){matrix[i][j] = 0;}}}// 处理有0的首行首列if(col){for(int i=0; i<m; i++){matrix[i][0] = 0;}}if(row){for(int j=0; j<n; j++){matrix[0][j] = 0;}}}
};
http://www.lryc.cn/news/572226.html

相关文章:

  • Linux:信号和线程
  • 如何在 Pop!_OS 或 Ubuntu Linux 上安装 Dash to Dock
  • 设备巡检系统小程序ThinkPHP+UniApp
  • 中科米堆全自动三维光学测量航空部件尺寸测量分析
  • 虚幻引擎的 Online Subsystem
  • 随记:在springboot中websocket的使用
  • Xsens IMU与NVIDIA Jetson兼容,助您将智能和自主系统更快推向市场
  • 191. 位1的个数
  • SQL注入安全研究
  • FreeRTOS 任务管理学习笔记
  • 从代码学习深度强化学习 - Double DQN PyTorch版
  • 动态规划算法思路详解
  • uni-app总结5-UTS插件开发
  • JavaScript性能优化实战大纲
  • 介绍一款免费MES、开源MES系统、MES源码
  • Rpc - RpcCaller 模块
  • 获取gitlab上项目分支版本(二)
  • 据字典是什么?和数据库、数据仓库有什么关系?
  • 解锁 JavaScript 模块化:ES6 Module 语法深度指南
  • OpenGL——单位向量点乘和叉乘在几何的应用
  • 从C++编程入手设计模式——装饰器模式
  • implement用法
  • 客户催单-01.需求分析和设计
  • 【单片机】51单片机学习笔记
  • 数据结构 4 (栈和队列)
  • 苍穹外卖-2025 完成基础配置环节(详细图解)
  • 拼多多商家端 anti_content 补环境分析
  • 如何使用 USB 数据线将文件从 PC 传输到 iPhone
  • 【漏洞复现】Apache Kafka Connect 任意文件读取漏洞(CVE-2025-27817)
  • 数控滑台在精密制造中起着至关重要的作用