【leetcode hot 100 73】矩阵置零

解法一:(使用两个标记变量)用矩阵的第一行和第一列代替方法一中的两个标记数组(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开始 -> 只处理除了第一行和第一列的数
  • 只要matrix[i][0]==0或者matrix[0][j]==0,则matrix[i][j]==0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/897323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【十三】Golang 通道

&#x1f4a2;欢迎来到张胤尘的开源技术站 &#x1f4a5;开源如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 通道通道声明初始化缓冲机制无缓冲通道代码示例 带…

【JAVA架构师成长之路】【电商系统实战】第12集:秒杀系统性能优化实战(CAN + Nginx + Sentinel)

30分钟课程&#xff1a;秒杀系统性能优化实战&#xff08;CDN Nginx Sentinel&#xff09; 课程目标 掌握静态资源 CDN 加速的配置与优化策略。通过 Nginx 实现负载均衡&#xff0c;提升系统横向扩展能力。使用 Sentinel 实现服务降级&#xff0c;保障核心链路稳定性。 课程…

K8S学习之基础十八:k8s的灰度发布和金丝雀部署

灰度发布 逐步扩大新版本的发布范围&#xff0c;从少量用户逐步扩展到全体用户。 特点是分阶段发布、持续监控、逐步扩展 适合需要逐步验证和降低风险的更新 金丝雀部署 将新版本先部署到一小部分用户或服务器&#xff0c;观察其表现&#xff0c;再决定是否全面推广。 特点&…

毕业项目推荐:基于yolov8/yolo11的苹果叶片病害检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

redis有哪几种持久化方式

Redis 提供了两种持久化方式&#xff1a;RDB&#xff08;Redis Database&#xff09; 和 AOF&#xff08;Append-Only File&#xff09;。它们各有优缺点&#xff0c;适用于不同的场景。以下是它们的原理、优缺点以及如何选择的建议&#xff1a; 1. RDB&#xff08;Redis Datab…

Unity引擎使用HybridCLR(华佗)热更新

大家好&#xff0c;我是阿赵。   阿赵我做手机游戏已经有十几年时间了。记得刚开始从做页游的公司转到去做手游的公司&#xff0c;在面试的时候很重要的一个点&#xff0c;就是会不会用Lua。使用Lua的原因很简单&#xff0c;就是为了热更新。   热更新游戏内容很重要。如果…

DeepSeek R1-7B 医疗大模型微调实战全流程分析(全码版)

DeepSeek R1-7B 医疗大模型微调实战全流程指南 目录 环境配置与硬件优化医疗数据工程微调策略详解训练监控与评估模型部署与安全持续优化与迭代多模态扩展伦理与合规体系故障排除与调试行业应用案例进阶调优技巧版本管理与迭代法律风险规避成本控制方案文档与知识传承1. 环境配…

大白话html语义化标签优势与应用场景

大白话html语义化标签优势与应用场景 大白话解释 语义化标签就是那些名字能让人一看就大概知道它是用来做什么的标签。以前我们经常用<div>来做各种布局&#xff0c;但是<div>本身没有什么实际的含义&#xff0c;就像一个没有名字的盒子。而语义化标签就像是有名…

软件工程---构件

在软件工程中&#xff0c;构件是一个独立的、可复用的软件单元&#xff0c;它具有明确的功能、接口和行为&#xff0c;并且可以在不同的环境中加以集成和复用。构件的概念是软件架构和组件化开发的核心思想之一&#xff0c;其目的是促进软件系统的模块化、可维护性和可扩展性。…

MES机联网4:文档资料

目录信息 MES机联网1&#xff1a;技术方案MES机联网2&#xff1a;采集网关MES机联网3&#xff1a;管理后台MES机联网4&#xff1a;文档资料 MQ接入文档 1、建立连接 mqtt连接地址: 192.168.0.138 mqtt端口: 1883 mqtt用户名&#xff1a;admin mqtt密码&#xff1a;123456 …

“此电脑”中删除WPS云盘方法(百度网盘通用)

&#x1f4e3;此方法适用于卸载WPS云盘后&#xff0c;WPS云盘图标依然在此电脑中显示的问题。 原理&#xff1a;通过注册来进行删除 步骤&#xff1a; WIN键R,打开运行窗口&#xff0c;输入regedit命令&#xff0c;来打开【注册表编辑器】&#xff1b; 从左侧&#xff0c;依…

【 Vue3 提升:技术解析与实践】

摘要 Vue.js 3.0 的发布为前端开发带来了众多性能提升、新特性和改进。本文将深入探讨 Vue3 的提升之处&#xff0c;从性能优化、新特性解析、生态系统发展等多个方面进行解析&#xff0c;并通过实践案例展示如何在项目中应用这些新特性。 一、认识 Vue3 1. Vue3 的发布背景…

279.完全平方数

279.完全平方数 力扣题目链接(opens new window) 给定正整数 n&#xff0c;找到若干个完全平方数&#xff08;比如 1, 4, 9, 16, ...&#xff09;使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 给你一个整数 n &#xff0c;返回和为 n 的完全平方数的 最少数…

HTML-网页介绍

一、网页 1.什么是网页&#xff1a; 网站是指在因特网上根据一定的规则&#xff0c;使用 HTML 等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”&#xff0c;通常是 HTML 格式的文件&#xff0c;它要通过浏览器来阅读。 网页是构成网站的基本元素&#xf…

Django模板语法及静态文件

模板语法及静态文件 1 多app创建 在主路由当中引入 include include()函数是Django.urls模块中的一个函数&#xff0c;它的作用是在urls.py文件中引入其他应用的URL模式。 from django.urls import path, include创建多个app python manage.py startapp project_one python ma…

[PWNME 2025] PWN 复现

这种比赛得0也不容易&#xff0c;前边暖声还是能作的。 GOT 指针前溢出&#xff0c;可以溢出到GOT表&#xff0c;然后把后门写上就行 Einstein 这个拿到WP也没复现成&#xff0c;最后自己改了一下。 int __cdecl handle() {int offset; // [rsp8h] [rbp-38h] BYREFunsigne…

微信小程序将markdown内容转为pdf并下载

要在微信小程序中将Markdown内容转换为PDF并下载,您可以使用以下方法: 方法一:使用第三方API服务 选择第三方API服务: 可以选择像 Pandoc、Markdown-PDF 或 PDFShift 这样的服务,将Markdown转换为PDF。例如,PDFShift 提供了一个API接口,可以将Markdown内容转换为PDF格式…

MongoDB(一) - MongoDB安装教程(Windows + Linux)

文章目录 前言一、Windows安装单机MongoDB1. 下载并解压MongoDB安装包1.1 下载1.2 解压1.3 相关文件介绍 2. 配置2.1 配置环境变量2.1.1 打开系统属性设置2.1.2 编辑 PATH 环境变量2.1.3 验证环境变量是否配置成功 2.2 创建相关目录和文件2.3 修改MongoDB配置文件 mongodb.conf…

mybatis日期格式与字符串不匹配bug

异常特征&#xff1a;java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.String ### Error updating database. Cause: java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.Str…

【算法学习之路】5.贪心算法

贪心算法 前言一.什么是贪心算法二.例题1.合并果子2.跳跳&#xff01;3. 老鼠和奶酪 前言 我会将一些常用的算法以及对应的题单给写完&#xff0c;形成一套完整的算法体系&#xff0c;以及大量的各个难度的题目&#xff0c;目前算法也写了几篇&#xff0c;题单正在更新&#xf…