当前位置: 首页 > 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.dtcms.com/a/254518.html

相关文章:

  • Mac电脑-Office 2024 长期支持版(Excel、Word、PPT)
  • 《Go语言圣经》map
  • F接口基础.go
  • 基于Spring Boot的计算机考研交流系统的设计与实现
  • 微信小程序canvas实现抽奖动画
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【环境搭建 / 点灯】
  • 视频续播功能实现 - 断点续看从前端到 Spring Boot 后端
  • IDE深度集成+实时反馈:企业级软件测试方案Parasoft如何重塑汽车巨头的测试流程
  • MyBatis原理剖析(三)--加载配置文件
  • shared_ptr 源码解析
  • 安卓vscodeAI开发实例
  • 【MySQL基础】MySQL内置函数全面解析:提升你的数据库操作效率
  • GVim-vimrc 字体缩放与界面优化配置
  • 一拖广角云台(一种广角镜头与云台相结合的监控设备)实现了动态追踪和预警功能
  • 开源ChatBI :深入解密 Spring AI Alibaba 的中文NL2SQL智能引擎
  • 门锁开关;与我们生活中紧密联系!
  • 前端vue js 使用插件 spark-md5 计算文件MD5值并封装成Promise异步调用方法
  • 小型语言模型(SLMs)有望重塑自主AI:效率、成本与实际部署
  • 深入探索 OpenCV 图像识别:从基础到深度学习
  • AI面试系统选型HR应考虑哪些问题?
  • JVM(7)——详解标记-整理算法
  • 安全工具:testssl.sh
  • 【鸿蒙HarmonyOS Next App实战开发】​​​​ArkUI纯色图生成器
  • 硬件-DAY04(ds18b20、ARM内核)
  • 回溯----8.N皇后
  • 日本生活:日语语言学校-日语作文-沟通无国界(3)-题目:わたしの友達
  • 深度学习-164-MCP技术之开发本地MCP服务器和异步客户端
  • JETBRAINS IDE 开发环境自定义设置快捷键
  • JMeter 高阶玩法:分布式压测的技术核心技术要点
  • 04、谁发明了深度学习的方法,是怎么发明的?