5-数组-矩阵置零

这是数组的第5篇算法,力扣链接。

给定一个 m x n 的矩阵,如果一个元素为 ,则将其所在行和列的所有元素都设为 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]]

 看到这道题的第一反应就是打表,两次遍历,一次记录清零的行列,最后再遍历清零。

func setZeroes(matrix [][]int) {rows, cols := make([]bool, len(matrix)), make([]bool, len(matrix[0]))for ri, row := range matrix {for ci, col := range row {if col == 0 {rows[ri] = truecols[ci] = true}}}for ri, row := range matrix {for ci, _ := range row {if rows[ri] || cols[ci] {matrix[ri][ci] = 0}}}
}

这里有多种解法,核心逻辑都差不多,只不过标记的方法不同。

这里延伸出一种特殊的标注逻辑,我们将每一行/列的信息同步到第一行/列中,这样就不会额外占用空间了。值得注意的是,第一列是否需要清零需要额外标注。

func setZeroes(matrix [][]int) {col0 := falsefor _, row := range matrix {if row[0] == 0 {col0 = true}for j := 1; j < len(matrix[0]); j++ {if row[j] == 0 {row[0] = 0matrix[0][j] = 0}}}for i := len(matrix) - 1; i >= 0; i-- {for j := 1; j < len(matrix[0]); j++ {if matrix[i][0] == 0 || matrix[0][j] == 0 {matrix[i][j] = 0}}if col0 {matrix[i][0] = 0}}
}

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

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

相关文章

O(1) 时间插入、删除和获取随机元素

题目链接 O(1) 时间插入、删除和获取随机元素 题目描述 注意点 在调用 getRandom 方法时&#xff0c;数据结构中 至少存在一个 元素满足每个函数的 平均 时间复杂度为 O(1) 解答思路 因为要满足满足每个函数的平均时间复杂度为 O(1)&#xff0c;只使用List新增和删除的时间…

芯品荟 | 酒精测试仪市场调研报告

产品简介 酒精检测仪是一种可以测量人体酒精浓度的电子设备。 它可以通过呼气或血液等方式来检测酒精浓度&#xff0c;被广泛应用于交通安全、职业健康等领域。 酒精检测仪的工作原理&#xff1a; 1、酒精检测仪分为2种&#xff0c;基于化学传感器与基于光学传感器&#xff…

k8s-Pod编排与调度

一、无状态负载 (Deployment) 1.1 背景 Pod是K8s调度的最小单元&#xff0c;但是Pod可能因为资源不足、集群崩溃等被驱逐。Controller Manage会管理Pod&#xff0c;完成Pod自愈、滚动升级等操作&#xff0c;通过Deployment这种资源完成Pod维护。 一个Deployment可以包含一个或…

阿里云云原生弹性方案:用弹性解决集群资源利用率难题

作者&#xff1a;赫曦 随着上云的认知更加普遍&#xff0c;我们发现除了以往占大部分的互联网类型的客户&#xff0c;一些传统的企业&#xff0c;一些制造类的和工业型企业客户也都开始使用云原生的方式去做 IT 架构的转型&#xff0c;提高集群资源使用率也成为企业上云的一致…

fastJson和jackson的日期数据处理

目录 1.jackson 2.fastjson 3.总结 1.jackson jackson是spring mvc默认的JSON解析方法&#xff0c;前端的数据序列化处理之后&#xff0c;后端经过反序列化处理可以直接使用实体对象进行接收。后端接口返回实体对象&#xff0c;经过序列化处理后前端可以接收并进行处理。 …

Java设计模式详解

各位大家好&#xff0c;从今天开始&#xff0c;作者开始整理 《JAVA软件设计模式&#xff08;GOF&#xff09;》 专栏。请各位多多关注&#xff01; 该专栏是根据作者的技术经验和设计模式的了解&#xff0c;进行详细的讲解。讲解过程中&#xff0c;会增入作者的一些个人观点和…

javaScript设计模式-工厂

它的好处是消除对象间的耦合度&#xff0c;在派生子类时提供了更大的灵活性。但盲目的把普通的构造函数扔在一边&#xff0c;并不值得提倡。如果要采一不可能另外换用一个类&#xff0c;或都不需要在运行期间在一系列可互换的类中进行选择&#xff0c;就不应该使用。这样在后期…

计算机网络-ACL访问控制列表

上一篇介绍NAT时候就看到了ACL这个东西了&#xff0c;这个是什么意思&#xff1f;有什么作用呢&#xff1f; 一、ACL访问控制列表 访问控制列表 (ACL, Access Control List)是由一系列permit或deny语句组成的、有序规则的列表。ACL是一个匹配工具&#xff0c;能够对报文进行匹配…

【Linux系列】在Pop!OS的启动器中添加自定义程序图标

文章目录 前言一、创建快捷方式二、快捷方式参数三、添加右键菜单和注册MIME 前言 无论是在Windows上&#xff0c;还是Linux&#xff0c;或者安卓这些我们常用的操作系统上&#xff0c;一些应用程序的快捷方式放在桌面或者启动器&#xff0c;只需要简单的点击就可以启动&#…

Python实现自动化办公(使用第三方库操作Excel)

1 使用 xlrd 读取Excel数据 1.1 获取具体单元格的数据 import xlrd# 1. 打开工作簿 workbook xlrd.open_workbook("D:/Python_study_projects/Python自动化办公/Excel/test1.xlsx") # 2. 打开工作表 sheet1 workbook.sheets()[0] # 选择所有工作表中的第一个 # …

css-动画效果学习示例

阴影 x-轴 y-轴 模糊度 颜色 (正负值可以表示角度问题) 可以加多个阴影 内置阴影 transition 可以添加动画延迟效果 向z轴缩进&#xff0c;开启透视respective 触发旋转效果 学习来源 &#xff1a;动画属性_哔哩哔哩_bilibili

vscode导出、导入全部插件

导出插件 code --list-extensions > plugins导入插件 将要导入的插件文本位置与终端位置一致 Get-Content plugins | ForEach-Object { code --install-extension $_ }在VSCode中导出安装的所有插件并在其他计算机进行导入-CSDN博客