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

[矩阵置零]

[]

初始思路分析

这段代码实现了将矩阵中元素为0的行和列全部置零的功能。主要思路是使用标记数组记录需要置零的行和列。以下是详细分析:

1. 初始化阶段
int m = matrix.size();
int n = matrix[0].size();
vector<bool> row(m), col(n);
  • 获取矩阵的行数m和列数n
  • 创建两个布尔数组:
    • row数组标记哪些行需要置零(长度=m)
    • col数组标记哪些列需要置零(长度=n)
2. 第一次遍历:标记阶段
for(int i=0; i<m; i++) {for(int j=0; j<n; j++) {if(matrix[i][j] == 0)row[i] = col[j] = true;}
}
  • 遍历矩阵的每个元素
  • 当发现元素为0时:
    • 标记该行row[i] = true
    • 标记该列col[j] = true
3. 第二次遍历:置零阶段
for(int i=0; i<m; i++) {for(int j=0; j<n; j++) {if(row[i] || col[j])matrix[i][j] = 0;}
}
  • 再次遍历矩阵的每个元素
  • 如果当前行被标记(row[i]==true)或当前列被标记(col[j]==true)
  • 就将该元素置为0
class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {int m=matrix.size();int n=matrix[0].size();vector<bool> row(m),col(n);for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(matrix[i][j]==0)row[i]=col[j]=true;}}for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(row[i]||col[j])matrix[i][j]=0;}}}
};
http://www.lryc.cn/news/625076.html

相关文章:

  • 【HarmonyOS】应用设置全屏和安全区域详解
  • C++/Java双平台表单校验实战:合法性+长度+防重复+Tab顺序四重守卫
  • html页面打水印效果
  • Android使用Kotlin协程+Flow实现打字机效果
  • 【React Hooks】封装的艺术:如何编写高质量的 React 自-定义 Hooks
  • 构建者设计模式 Builder
  • 开源im即时通讯软件开发社交系统全解析:安全可控、功能全面的社交解决方案
  • 使用 Zed + Qwen Code 搭建轻量化 AI 编程 IDE
  • FlycoTabLayout CommonTabLayout 支持Tab选中字体变大 选中tab的加粗效果首次无效的bug
  • Redis-缓存-穿透-布隆过滤器
  • [Linux]学习笔记系列 --[mm][list_lru]
  • bun + vite7 的结合,孕育的 Robot Admin 【靓仔出道】(十三)
  • DELL服务器 R系列 IPMI的配置
  • Java基础 8.18
  • 贪吃蛇游戏实现前,相关知识讲解
  • 【LeetCode 热题 100】198. 打家劫舍——(解法二)自底向上
  • MyBatis学习笔记(上)
  • 从双目视差图生成pcl点云
  • linux 内核 - 进程地址空间的数据结构
  • Chromium base 库中的 Observer 模式实现:ObserverList 与 ObserverListThreadSafe 深度解析
  • 套接字超时控制与服务器调度策略
  • 单例模式及优化
  • 高防IP如何实现秒级切换?
  • 【Day 30】Linux-Mysql数据库
  • IDE开发系列(2)扩展的IDE框架设计
  • STC8单片机矩阵按键控制的功能实现
  • 分治-归并-493.翻转对-力扣(LeetCode)
  • Flutter 自定义 Switch 切换组件完全指南
  • Python 面向对象三大特性详解(与 C++ 对比)
  • Android Handler 线程执行机制