【leetcode hot 100 73】矩阵置零

news/2025/3/6 12:59:30/

解法一:(使用两个标记变量)用矩阵的第一行和第一列代替方法一中的两个标记数组(col、row[ ]:第几列、行出现0),以达到 O(1) 的额外空间。

  • 这样会导致原数组的第一行和第一列被修改,无法记录它们是否原本包含 0。因此我们需要额外使用两个标记变量分别记录第一行和第一列是否原本包含 0。
  • 在实际代码中,我们首先预处理出两个标记变量,接着使用其他行与列去处理第一行与第一列,然后反过来使用第一行与第一列去更新其他行与列,最后使用两个标记变量更新第一行与第一列即可。
class Solution {public void setZeroes(int[][] matrix) {int m=matrix.length, n=matrix[0].length;boolean row=false, col=false;// 判断第一行有没有0for(int i=0; i<n; i++){if(matrix[0][i]==0){row=true;}}// 判断第一列有没有0for(int i=0; i<m; i++){if(matrix[i][0]==0){col=true;}}// 判断数组中是否有0 -> ij都是从1开始for(int i=1;i<m;i++){for(int j=1;j<n;j++){if(matrix[i][j]==0){matrix[0][j]=0;matrix[i][0]=0;}}}// 第一行出现0的列+第一列出现0的行=0 -> ij都是从1开始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][0]==0或者matrix[0][j]==0,则matrix[i][j]==0matrix[i][j]=0; }}}// 判断第一行第一列是否需要置零if(row){for(int i=0;i<n;i++){matrix[0][i]=0;}}if(col){for(int i=0;i<m;i++){matrix[i][0]=0;}}}
}

注意:

  • 同时涉及到ij时,ij都是从1开始 -> 只处理除了第一行和第一列的数

http://www.ppmy.cn/news/1577071.html

相关文章

Python实战:argparse模块的详细使用

文章目录 一、基本使用步骤二、参数类型三、常用参数选项四、实例演示4.1 使用 argparse 解析命令行参数4.2 完整的示例程序 五、进阶用法六、总结 argparse 是 Python 标准库中用于解析命令行参数的模块&#xff0c;它使得编写用户友好的命令行界面变得简单易行。以下将详细介…

Electron如何执行Python exe程序

在 Electron 应用中执行打包后的 Python exe 程序&#xff0c;通常可以借助 Node.js 的 child_process 模块来实现。以下为你详细介绍具体的实现步骤和示例代码&#xff1a; 1. 确保 Python 可执行文件路径正确 在使用 child_process 模块执行 Python 可执行文件之前&#xf…

makefile中采用echo进行调试

在 Makefile 中使用 echo 输出变量是调试变量值的常用方法。以下是具体用法及注意事项&#xff1a; 一、基础用法&#xff1a;在规则中输出变量 makefile 定义变量 VAR Hello World 在规则中使用 echo 输出变量 print_var: echo “调试 VAR的值是: $(VAR)” 执行命令&#x…

spring boot项目Linux环境jar包启动shell脚本

spring boot jar启动shell脚本示例 使用场景shell脚本文件示例可能遇见的问题1. 无权限使用chomd命令为文件添加权限 2. Shell脚本的行尾格式不兼容通过 Vim 修改文件格式 使用场景 在linux环境&#xff0c;启动小型spring boot项目时&#xff0c;我们总需要一些操作步骤才能将…

软考架构师笔记-进程管理

1.4 进程管理 进程状态&#xff1a;运行、等待、就绪。阻塞不能直接到运行状态&#xff0c;需要到就绪状态排队。五态图等。进程管理&#xff1a;前驱图临界资源&#xff1a;共享的资源&#xff0c;如打印机等临界区&#xff1a;访问临界资源的那段代码称为临界区信号量&#…

代码托管平台对比分析:Gitee与GitLab

文章目录 代码托管平台对比分析&#xff1a;Gitee与GitLab平台概述GiteeGitLab 功能对比代码托管与版本控制CI/CD 集成项目管理用户体验自托管与云托管安全性价格与成本 功能对比表格优势与劣势Gitee 优势Gitee 劣势GitLab 优势GitLab 劣势 实际使用场景Gitee 适用场景GitLab 适…

AI-Ollama本地大语言模型运行框架与Ollama javascript接入

1.Ollama Ollama 是一个开源的大型语言模型&#xff08;LLM&#xff09;平台&#xff0c;旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。 Ollama 提供了一个简单的方式来加载和使用各种预训练的语言模型&#xff0c;支持文本生成、翻译、代码编写、问答等多种…

SpringMvc与Struts2

一、Spring MVC 1.1 概述 Spring MVC 是 Spring 框架的一部分&#xff0c;是一个基于 MVC 设计模式的轻量级 Web 框架。它提供了灵活的配置和强大的扩展能力&#xff0c;适合构建复杂的 Web 应用程序。 1.2 特点 轻量级&#xff1a;与 Spring 框架无缝集成&#xff0c;依赖…