LeetCode hot 100—矩阵置零
题目
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
示例
示例 1:
输入:matrix = [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:
输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]] 输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]
分析
标记法
先判断第一行和第一列是否包含 0,因为这两部分既是数据又充当标记作用。
遍历除第一行、第一列之外的所有元素。如果发现元素为 0,则将对应行的第一列和对应列的第一行设为 0,作为该行或该列需要清零的标记。
根据第一行和第一列的标记,将相应的元素置为 0。这里需要跳过第一行和第一列,因为它们需要后续单独处理。
根据最初的检查结果,将第一行或第一列全部置为 0。
时间复杂度:O()
空间复杂度:O(1)
class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {if(matrix.empty() || matrix[0].empty()) return;int m = matrix.size(), n = matrix[0].size();bool firstRowZero = false, firstColZero = false;// 检查第一行是否有 0for (int j = 0; j < n; ++j) {if (matrix[0][j] == 0) {firstRowZero = true;break;}}// 检查第一列是否有 0for (int i = 0; i < m; ++i) {if (matrix[i][0] == 0) {firstColZero = true;break;}}// 用第一行和第一列记录每一行和每一列是否需要置 0for (int i = 1; i < m; ++i) {for (int j = 1; j < n; ++j) {if (matrix[i][j] == 0) {matrix[i][0] = 0; // 标记该行matrix[0][j] = 0; // 标记该列}}}// 根据标记将对应行列置 0(注意:跳过第一行和第一列)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][j] = 0;}}}// 若第一行原本存在 0,则将第一行全部置 0if (firstRowZero) {for (int j = 0; j < n; ++j) {matrix[0][j] = 0;}}// 若第一列原本存在 0,则将第一列全部置 0if (firstColZero) {for (int i = 0; i < m; ++i) {matrix[i][0] = 0;}}}
};
相关文章:
LeetCode hot 100—矩阵置零
题目 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2࿱…...
部署Windows Server自带“工作文件夹”实现企业网盘功能完整步骤
前文已经讲解过Windows Server自带的“工作文件夹”功能,现以Windows Server 2025为例介绍部署工作文件夹的完整步骤: 为了确保您能够顺利部署和充分利用工作文件夹的功能,我将按照以下步骤进行讲解。 请注意,在域环境中部署工作…...
植物大战僵尸杂交版v3.3最新版本(附下载链接)
B站游戏作者潜艇伟伟迷于12月21日更新了植物大战僵尸杂交版3.3版本!!!,有b站账户的记得要给作者三连关注一下呀! 不多废话下载链接放上: 夸克网盘链接::https://pan.quark.cn/s/6f2a…...
非关系型数据库和关系型数据库的区别
非关系型数据库(NoSQL)和关系型数据库(SQL)的主要区别体现在以下几个方面: 数据模型: 关系型数据库(SQL):数据以表格形式存储,数据行和列组成,每个…...
CPU负载高告警问题的定位与优化建议
#作者:猎人 文章目录 背景一.问题排查1.1 找到相应的容器1.2 找到对应的deployment1.3 查看pod日志1.4 查看nginx配置文件1.5 查看deployment的yaml文件 二.优化建议 背景 Docker 版本:19.03.14 Operating System: Red Hat Ent…...
2月28日,三极管测量,水利-51单片机
众所周知,三极管(BJT)有三个管脚,基极(B)、集电极(C)、发射极(E),在实际应用中,不可避免地会遇到引脚辨别的问题。接下来就讲下三极管…...
批量提取 Word 文档中的图片
在 Word 文档中,我们可以插入图片、文本、链接等各种各样的资源。在某些场景下我们需要提取这些信息,比如我们需要提取 Word 文档中的图片,将每一个 Word 文档中的图片都提取出来放到一个单独的文件夹中,那么我们应该怎么做呢&…...
C#—Settings配置详解
C#—Settings配置详解 在C#项目中,全局配置通常指的是应用程序的设置(settings),这些设置可以跨多个类或组件使用,并且通常用于存储应用程序的配置信息,如数据库连接字符串、用户偏好设置等。 Settings配置…...
UI自动化框架介绍
selenium Pytest Allure 优势 1.1 更高效的自动化测试 Selenium 提供了强大的浏览器自动化能力,可以模拟用户与网页的交互。它能够在不同浏览器上运行测试,确保 Web 应用程序在多种环境下的兼容性。Pytest 是一个非常灵活、简洁的 Python 测试框架&a…...
【工具推荐】在线提取PDF、文档、图片、论文中的公式
网址1:https://simpletex.cn/ai/latex_ocr 网址2: https://www.latexlive.com/home 推荐理由:无需下载,在线使用,直接 截图 CTRLV 效果更佳。...
帮我设计一个c语言学习阶段
以下是一个针对不同学习阶段的C语言学习计划,你可以根据自己的基础和目标进行调整: 第一阶段:基础语法与程序结构(第1-4周) 目标 熟悉C语言的基本语法和程序结构。 能够编写简单的程序。 学习内容 环境搭建 安装…...
解决windows npm无法下载electron包的问题
1.将nsis.zip解压到C:\Users\XXX\AppData\Local\electron-builder\Cache 2.将winCodeSign.zip解压到C:\Users\XXX\AppData\Local\electron-builder\Cache 3.将electron-v20.3.8-win32-ia32.zip复制到C:\Users\XXX\AppData\Local\electron\Cache 4.将electron-v20.3.8-win32-…...
网络编程 day01
网络编程 day01 0. 网络编程课程介绍1. 认识网络1.网络发展史2.局域网与广域网局域网(LAN)广域网(Wan) 3.光猫4.路由器5.交换机与路由器6.网线 2. IP1. 基本概念2. 网络号/主机号(二级划分)3. IP地址分类整…...
【三.大模型实战应用篇】【4.智能学员辅导系统:docx转PDF的自动化流程】
去年团队庆功宴上,我司CTO端着酒杯过来:“老王啊,咱们现在文档解析做得挺溜了,但老师们总抱怨下载的作业格式乱码…” 我看了眼手机里凌晨三点收到的崩溃警报,把杯里的可乐一饮而尽——得,新的副本又开了。 一、为什么PDF转换比想象中难十倍? 某次用户调研中,数学教研…...
2915. 和为目标值的最长子序列的长度
给你一个下标从 0 开始的整数数组 nums 和一个整数 target 。 返回和为 target 的 nums 子序列中,子序列 长度的最大值 。如果不存在和为 target 的子序列,返回 -1 。 子序列 指的是从原数组中删除一些或者不删除任何元素后,剩余元素保持原来…...
谷仓的安保
Farmer John给谷仓安装了一个新的安全系统,并且要给牛群中的每一个奶牛安排一个有效的密码。一个有效的密码由L(3 < L < 15)个小写字母(来自传统的拉丁字母集a...z)组成,至少有一个元音(a, e, i, o, 或者 u),至少两个辅音(除去元音以外…...
vcredist_x64 资源文件分享
vcredist_x64 是 Microsoft Visual C Redistributable 的 64 位版本,用于在 64 位 Windows 系统上运行使用 Visual C 开发的应用程序。它包含了运行这些应用程序所需的运行时组件。 vcredist_x64 资源工具网盘下载链接:https://pan.quark.cn/s/ef56f838f…...
MySQL零基础教程14—子查询
子查询比较简单,我们还是通过案例引入。 有时候我们查询的时候,需要用到的不止一个表的数据,比如下面的场景: 查询名字叫李晓红同学的班主任姓名 我们提供三个表的基础信息如下: 从三张表的结构,我们不难…...
使用mermaid查看cursor程序生成的流程图
一、得到cursor生成的流程图文本 cursor写的程序正常运行后,在对话框输入框中输入诸如“请生成扫雷的代码流程图”,然后cursor就把流程图给生成了,但是看到的还是文本的样子,保留这部分内容待用 二、注册一个Mermaid绘图账号 …...
L1-031 到底是不是太胖了
L1-031 到底是不是太胖了 - 团体程序设计天梯赛-练习集 (pintia.cn) 解题思路 输入数据 首先从输入中读取正整数 n,表示要处理的人数。 然后通过循环 n 次,每次读取一个人的身高 h(单位:厘米)和实际体重 w࿰…...
Keyv自定义序列化教程:超越JSON,支持更多数据类型
Keyv自定义序列化教程:超越JSON,支持更多数据类型 【免费下载链接】keyv jaredwray/keyv: 这是一个分布式键值存储库,用于在多个节点上存储数据。适合用于需要分布式存储和访问的场景。特点:易于使用,支持多种数据存储…...
PakePlus云打包入门指南:从零到一的GitHub Token配置与安全实践
PakePlus云打包入门指南:从零到一的GitHub Token配置与安全实践 【免费下载链接】PakePlus Turn any webpage/HTML/Vue/React and so on into desktop and mobile app under 5M with easy in few minutes. 轻松将任意网站/HTML/Vue/React等项目构建为轻量级(小于5M)…...
5分钟学会使用OrigamiSimulator:实时WebGL折纸模拟器完全指南
5分钟学会使用OrigamiSimulator:实时WebGL折纸模拟器完全指南 【免费下载链接】OrigamiSimulator Realtime WebGL origami simulator 项目地址: https://gitcode.com/gh_mirrors/or/OrigamiSimulator OrigamiSimulator是一款基于WebGL的实时折纸模拟器&#…...
LongCat-Video:136亿参数开源AI视频生成模型的技术突破与实践指南
LongCat-Video:136亿参数开源AI视频生成模型的技术突破与实践指南 【免费下载链接】LongCat-Video 项目地址: https://ai.gitcode.com/hf_mirrors/meituan-longcat/LongCat-Video 在人工智能视频生成领域,长视频生成一直是技术挑战的制高点。传统…...
解锁PlotJuggler数据可视化:工业时序数据处理与分析指南
解锁PlotJuggler数据可视化:工业时序数据处理与分析指南 【免费下载链接】PlotJuggler The Time Series Visualization Tool that you deserve. 项目地址: https://gitcode.com/gh_mirrors/pl/PlotJuggler PlotJuggler是一款专业的时序数据可视化工具&#x…...
mxbai-embed-large-v1效果展示:超越OpenAI的文本嵌入模型实测
mxbai-embed-large-v1效果展示:超越OpenAI的文本嵌入模型实测 1. 引言:文本嵌入技术的新标杆 在自然语言处理领域,文本嵌入模型正成为各类智能应用的基础设施。mxbai-embed-large-v1作为最新开源的文本嵌入模型,在MTEB基准测试中…...
human-pose-estimation.pytorch:简单而强大的人体姿态估计终极指南
human-pose-estimation.pytorch:简单而强大的人体姿态估计终极指南 【免费下载链接】human-pose-estimation.pytorch The project is an official implement of our ECCV2018 paper "Simple Baselines for Human Pose Estimation and Tracking(https://arxiv.o…...
2026年正点原子开发板移植方案——从0开始的Rootfs之路(5)WSL + NFS 网络启动踩坑记:从挂载失败到成功启动的完整历程
2026年正点原子开发板移植方案——从0开始的Rootfs之路(5)WSL NFS 网络启动踩坑记:从挂载失败到成功启动的完整历程项目已经开源!尝试使用IMX-Forge给你的开发板跑新的Linux 7.0内核:https://github.com/Awesome-Embe…...
BGE-Large-Zh前沿探索:量子计算语义编码实验
BGE-Large-Zh前沿探索:量子计算语义编码实验 引言 量子计算正在重新定义计算的边界,而自然语言处理作为人工智能的核心领域,也迎来了与量子技术融合的历史性机遇。我们进行了一项创新实验:将BGE-Large-Zh这一强大的语义编码模型…...
如何正确计算 CSV 文件中每行学生成绩的平均值
本文详解 python 中使用 csv 模块处理学生成绩数据时常见的累积错误,并提供结构清晰、健壮可靠的解决方案,重点解决因变量作用域不当导致的平均值计算失真问题。在使用 Python 的 csv 模块逐行读取学生成绩文件(如 "students.csv"&…...


