算法练习: 矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法

提示图
要实现这个功能,我们可以使用原地算法。首先,我们需要两个额外的数组来记录哪些行和列需要被置为0。然后,我们遍历整个矩阵,如果发现某个元素为0,我们就将对应的行和列标记为需要置0。最后,我们再次遍历矩阵,根据之前的标记将相应的行和列置为0。

以下是js示例代码:

function setZeroes(matrix) {const m = matrix.length;const n = matrix[0].length;const rows = new Array(m).fill(false);const cols = new Array(n).fill(false);// 第一步:找出哪些行和列需要置为0for (let i = 0; i < m; i++) {for (let j = 0; j < n; j++) {if (matrix[i][j] === 0) {rows[i] = true;cols[j] = true;}}}// 第二步:根据标记将相应的行和列置为0for (let i = 0; i < m; i++) {for (let j = 0; j < n; j++) {if (rows[i] || cols[j]) {matrix[i][j] = 0;}}}
}// 测试示例
const matrix = [[1, 1, 1],[1, 0, 1],[1, 1, 1]
];
setZeroes(matrix);
console.log(matrix); // 输出: [[1, 0, 1], [0, 0, 0], [1, 0, 1]]

这段代码首先创建了两个布尔数组 rows 和 cols,用于记录哪些行和列需要置为0。然后,它遍历整个矩阵,如果发现一个元素为0,就将对应的行和列标记为需要置0。最后,它再次遍历矩阵,根据之前的标记将相应的行和列置为0。

以下是python示例代码:

def setZeroes(matrix):m, n = len(matrix), len(matrix[0])rows, cols = set(), set()# 记录哪些行和列需要被置为0for i in range(m):for j in range(n):if matrix[i][j] == 0:rows.add(i)cols.add(j)# 将包含0的行和列置为0for i in range(m):for j in range(n):if i in rows or j in cols:matrix[i][j] = 0# 示例用法
matrix = [[1, 1, 1],[1, 0, 1],[1, 1, 1]
]
setZeroes(matrix)
print(matrix)  # 输出: [[1, 0, 1], [0, 0, 0], [1, 0, 1]]

在这个解决方案中,我们首先遍历整个矩阵以确定哪些行和列应该被设置为0。然后,我们再次遍历矩阵,并将这些行和列的所有元素设置为0。这种方法的时间复杂度是 O(mn),其中 m 是矩阵的行数,n 是矩阵的列数。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

3600关成语填字APP游戏ACCESS\EXCEL数据库

成语类的APP游戏在最近一两年内非常的火爆&#xff0c;其主要原因是几乎所有中国人都能够冲个几十上百关&#xff0c;学习和趣味共享。看图猜成语类的数据之前已经弄到过很多&#xff0c;今天这份成语填字的倒是头一份。 该数据做成的APP效果如下&#xff1a; 数据以\符号分隔…

Windows 11 下使用 MSVC 2022 编译64位Nginx

一、软件准备 1、安装 Visual Studio 2022 包含单个组件&#xff1a; .NET Framework 4.6.1 目标包.NET Framework 4.6.1 SDKWindows 通用 C 运行时Windows 通用 CRT SDKMSVC v142 - VS 2019 C x64/x86 生成工具(v14.26)对 v142 生成工具(14.21)的 C/CLI 支持Clang compile fo…

Confluence8.5.14安装

一、Centos8、安装jdk11(略) 二、mysql数据库 1、mysql安装包下载: MySQL :: Download MySQL Community Server 2、安装: https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.37-1.el8.x86_64.rpm-bundle.tar tar -xvf mysql-8.0.37-1.el8.x86_64.rpm-bund…

【Hadoop|HDFS篇】HDFS概述

1. HDFS产出背景及定义 1.1 HDFS产生背景 随着数据量越来越大&#xff0c;在一个操作系统存不下所有的数据&#xff0c;那么就分配到更多的操作系 统管理的磁盘中&#xff0c;但是不方便管理和维护&#xff0c;迫切需要一种系统来管理多台机器上的文件&#xff0c;这 就是分布…

智能化升级:AI在客服知识库中的应用

引言 在数字化时代&#xff0c;客户服务已成为企业竞争的关键一环。随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;传统客服模式正经历着前所未有的变革。AI与客服知识库的深度融合&#xff0c;不仅极大地提升了客服处理的效率与准确性&#xff0c;还为用…

vue3集成sql语句编辑器

使用的是codemirror 安装 pnpm add codemirror vue-codemirror --savepnpm add codemirror/lang-sqlpnpm add codemirror/theme-one-dark使用 <template><codemirror v-model"configSql" placeholder"Code goes here..." ref"codemirrorR…

MIPI(Mobile Industry Processor Interface)

MIPI是指Mobile Industry Processor Interface&#xff0c;移动产业处理器接口&#xff0c;MIPI包含了多种接口&#xff0c;比如DSI显示屏接口、CSI摄像头接口、I3C、RFFE射频前端控制接口和SPMI系统电源管理接口。 车载液晶屏的接口主要使用RGB和LVDS&#xff0c;MIPI接口主要…

html+css+js网页设计 故宫7个页面 ui还原度100%

htmlcssjs网页设计 故宫7个页面 ui还原度100% 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1…

汉诺塔的最简单讲解

##从印度佬哥那里学来&#xff0c;所以我想直接引用他画出来的树图 上图为一个经典的三碟盘的汉诺塔的递归树形图。 我们为了将所有碟盘按照从小到大的方式排列在目标处 --- 3 只用三步: 1. 将最小的碟盘和倒数第二的碟盘 全都移动到 2处 也就是中间那个棍子。 2.将最大的碟…

【服务对接】✈️SpringBoot 项目整合华为云 obs 对象存储服务

目录 &#x1f44b;前言 &#x1f440;一、环境准备 &#x1f331;二、整合实现 1.依赖引入 2.准备 AK 和 SK ​ 3.配置类 4.obs 工具类封装 &#x1f49e;️三、测试使用 &#x1f37b;四、 obs 客户端 &#x1f4eb;五、章末 &#x1f44b;前言 小伙伴们大家好&…

ini文件中的节点如何删除?

1、在某些场合中&#xff0c;会将某些数据记录本地情况&#xff0c;会有“保存/加载”过程。 比如&#xff1a; 第一次Write节点信息&#xff08;2个&#xff09;&#xff0c;如下节点 第二次Write节点信息&#xff08;1个&#xff09;&#xff0c;如下节点。会发现本来想写入…

《实战AI大模型》从入门到精通,彻底掌握AI技术

前言 《实战AI大模型》是一本兼具深度和广度的大模型入门书籍&#xff0c;它深入浅出地诠释了AI大模型的核心概念和技术。以大模型为代表的AI2.0是有史以来最重要的技术革命&#xff0c;如果你渴望了解和应用大模型&#xff0c;这本书是一份可贵的“知识基座” 无论你是NLP新手…

使用控制台与键盘进行输入输出

1、控制台简介与初始化 计算机在上电启动后&#xff0c;显示器被默认配置成80x25列的文本显示模式 。其使用从0xb8000开始&#xff0c;一共32KB的显存用于显示。如要在屏幕上指定位置显示特定的字符&#xff0c;则只需找到该位置对应的显存地址&#xff0c;写入2字节的数据&am…

海外直播对网速、带宽、安全的要求

要满足海外直播的要求&#xff0c;需要拥有合适的网络配置。在全球化的浪潮下&#xff0c;海外直播正逐渐成为企业、个人和各类组织的重要工具。不论是用于市场推广、品牌宣传&#xff0c;还是与观众互动&#xff0c;海外直播都为参与者带来了丰富的机会。然而&#xff0c;确保…

【C++从练气到飞升】19---哈希:哈希冲突 | 哈希函数 | 闭散列 | 开散列

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书&#x1f389; 目录 ⛳️推荐 一、unordered 系列关联式容器 二、unordered_map 1.1 unordered_map 介绍 1.2 unordered_map 的…

5大专业措施确保源代码防泄密

深信达的SDC防泄密软件通过一系列创新技术和方法来实现源代码的安全保护&#xff0c;以下是一些关键点和注意事项&#xff1a; 1. **内核级虚拟沙盒技术**&#xff1a;SDC沙盒创建一个与外部环境隔离的执行空间&#xff0c;源代码的编译、运行和调试过程完全隔离于外部操作系统…

部标JT808标准下的视频汇聚新方案:EasyCVR平台助力推动车辆监管智能化进程

在数字化转型的浪潮中&#xff0c;智慧城市的建设正以前所未有的速度推进&#xff0c;而市政车载设备作为城市运行的重要“神经末梢”&#xff0c;其智能化、联网化水平直接影响着城市管理效率与服务质量。近年来&#xff0c;随着部标协议&#xff08;即国家行业标准协议&#…

如何录制黑神话悟空的游戏BGM导入iPhone手机制作铃声?

在游戏的世界里&#xff0c;总有那么一些旋律&#xff0c;能够触动玩家的心弦&#xff0c;让人难以忘怀。《黑神话悟空》以其精美的画面和动人的背景音乐&#xff0c;赢得了无数玩家的喜爱。如果你也想将游戏中的背景音录制下来&#xff0c;制作成个性化的m4r格式铃声&#xff…

实例分割【YOLOv8版】

参考文档 Segment - Ultralytics YOLO Docs​docs.ultralytics.com/tasks/segment/ 何为实例分割&#xff1f; 实例分割比目标检测更进一步&#xff0c;涉及识别图像中的各个对象并将它们与图像的其余部分分割开来。 实例分割模型的输出是一组用于勾勒图像中每个对象的掩码…

element-plus表单项循环的得到的。并且一个项里面有多个子项需要校验。

数据内容循环得到。并且还可以自己增加减少。怎么给他写校验呢&#xff1f; <el-formref"ruleFormRef":rules"rules":model"row" > <el-form-item:label"index>0?:资质及职称"v-for"(item,index) in row!.userTitl…