LeetCode-热题100:73. 矩阵置零

题目描述

给定一个 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]]

提示:

  • m == matrix.length
  • n == matrix[0].length
  • 1 <= m, n <= 200
  • -231 <= matrix[i][j] <= 231 - 1

代码及注释

func setZeroes(matrix [][]int) {x, y := 1, 1// 检查第一行和第一列是否有0if matrix[0][0] == 0 {x = 0y = 0}// 检查第一列是否有0for i := 0; i < len(matrix); i++ {if matrix[i][0] == 0 {x = 0}}// 检查第一行是否有0for j := 0; j < len(matrix[0]); j++ {if matrix[0][j] == 0 {y = 0}}// 遍历矩阵,如果某个位置为0,则将该位置的行首和列首设置为0for i := 0; i < len(matrix); i++ {for j := 0; j < len(matrix[0]); j++ {if matrix[i][j] == 0 {matrix[i][0] = 0matrix[0][j] = 0}}}// 根据行首和列首的标记,将对应的行和列设置为0for i := 1; i < len(matrix); i++ {if matrix[i][0] == 0 {for j := 0; j < len(matrix[0]); j++ {matrix[i][j] = 0}}}for j := 1; j < len(matrix[0]); j++ {if matrix[0][j] == 0 {for i := 0; i < len(matrix); i++ {matrix[i][j] = 0}}}// 如果第一行或第一列原来就有0,那么将整行或整列设置为0if x == 0 {for i := 0; i < len(matrix); i++ {matrix[i][0] = 0}}if y == 0 {for j := 0; j < len(matrix[0]); j++ {matrix[0][j] = 0}}
}

该算法的时间复杂度为 O(m * n),其中 m 和 n 分别是矩阵的行数和列数。这是因为该算法需要遍历整个矩阵来找到0,并在找到0的情况下设置对应的行和列为0。

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

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

相关文章

企微侧边栏开发(内部应用内嵌H5)

一、背景 公司的业务需要用企业微信和客户进行沟通&#xff0c;而客户的个人信息基本都存储在内部CRM系统中&#xff0c;对于销售来说需要一边看企微&#xff0c;一边去内部CRM系统查询&#xff0c;比较麻烦&#xff0c;希望能在企微增加一个侧边栏展示客户的详细信息&#xf…

常见手撕项目C++

常见手撕项目C 设计模式单例模式饿汉模式懒汉模式 设计模式 单例模式 单例模式是一种常用的软件设计模式&#xff0c;其目的是确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。 优点&#xff1a; 资源控制&#xff1a;单例模式能够确保一个类只有一个实…

淘宝订单中的涉及红包检测、优惠券检测方案|工具|API

首先&#xff0c;检测订单红包的核心价值是什么&#xff1f; “红包的本质就是薅平台羊毛&#xff1a;不用怀疑&#xff0c;平台对于这种损害平台利益的行为肯定是最高等级的稽查”。那么&#xff0c;在日常运营中&#xff0c;需要尽可能过滤这类订单。 其次&#xff0c;如何使…

2024-03-28 问AI: 介绍一下AI 大神,Ian Goodfellow

文心一言 Ian Goodfellow是机器学习领域的知名学者&#xff0c;对深度学习领域有着重要贡献。他生于1985年&#xff0c;本科和硕士阶段就读于斯坦福大学&#xff0c;师从吴恩达。博士阶段&#xff0c;他跟随蒙特利尔大学的著名学者Yoshua Bengio研究机器学习&#xff0c;并在2…

SQL注入 (一)

一、sql注入的简介 将一段内容传入到目标网站&#xff0c;这段内容会被当做程序来执行 二、MySQL扩展补充 mysql的结构 库表名字段数据 mysql的用户 管理员&#xff1a;跨库、文件读写操作普通用户&#xff1a;猜解 判断目标网站的用户类别 白盒&#xff1a;读代码黑盒…

happybase基本操作方法

一、准备工作 &#xff08;1&#xff09;windows下安装happybase库&#xff1a; pip install happybase -i https://pypi.tuna.tsinghua.edu.cn/simple &#xff08;2&#xff09;确保HDFS、Hbase、Zookeeper服务正常运行&#xff1a; 启动HDFS命令&#xff1a;start-dfs.sh…

【数据结构 | 图论】如何用链式前向星存图(保姆级教程,详细图解+完整代码)

一、概述 链式前向星是一种用于存储图的数据结构&#xff0c;特别适合于存储稀疏图&#xff0c;它可以有效地存储图的边和节点信息&#xff0c;以及边的权重。 它的主要思想是将每个节点的所有出边存储在一起&#xff0c;通过数组的方式连接&#xff08;类似静态数组实现链表…

多线程实现Scheduler定时任务

在Spring框架中&#xff0c;Scheduled注解用于标记一个方法作为定时任务&#xff0c;它使用cron表达式来定义任务的执行频率。对于cron表达式定义的定时任务&#xff0c;如果上一个任务的执行还没有完成&#xff0c;下一个任务的执行行为取决于你使用的调度器&#xff08;sched…

C语言多服务器多播组网框架

使用技术: UDP ipv4 禁止本地回环 允许端口复用 超时等待 限制跳点 Echo 功能描述: 任意endpoint可主动发送多播,也可以收到信息后自动多播 前期准备: 开启操作系统多播广播功能,关闭系统防火墙,使用物理路由还需在路由开启广播多播功能 发送端和接收端运行不分先后 可无…

慧天【HTWATER】:水文水动力模型的革命性工具,城市内涝的精准解决方案

城市内涝水文水动力模型介绍 在城市排水防涝规划过程中&#xff0c;水文水动力耦合模型已经成为一种不可或缺的分析工具。在模型建立、城市内涝风险评估、排水系统性能诊断以及海绵城市规划等方面&#xff0c;内涝耦合模型提供了相应的模拟及分析工具&#xff1a; 1.1丰富的数…

Coding构建SSh登录教程

SSH 命令行 (Jenkins 原生) 持续集成中的 SSH 命令行插件通常用于授权构建机登录云服务器执行相应的命令与任务。通过 SSH 命令行插件&#xff0c;构建机可以针对云服务器执行以下操作&#xff1a; 将构建机上的文件推送到云主机&#xff1b; 将云主机上的文件拉取至构建机上&…

前端学习<二>CSS基础——09-CSS案例讲解:博雅互动

前言 CSS已经学了一些基础内容了&#xff0c;我们来讲解一个小案例吧。以博雅互动的官网首页举例。 版心 首页的版心如下&#xff1a; 这里我们要普及一个概念&#xff0c;叫“版心”。版心是页面中主要内容所在的区域。 比如说&#xff0c;网站左上角的logo&#xff0c;设计…

Flutter 开发学习笔记(0):环境配置

文章目录 前言开发需求环境配置运行出现问题我运行也是解决了很久的问题镜像源设置为清华的镜像源&#xff08;不知道有没有影响&#xff09;使用JDK21&#xff0c;JDK版本不能低于JDK11手动下载flutter 对应的gradle 运行成功&#xff01; 前言 我最近一直在用Uniapp写代码&a…

vmware,linux,centos7,NAT模式下的网络配置

centos7的NAT网络配置 NAT模式说明虚拟机网络配置工具本机配置net8网络&#xff08;NAT的网域&#xff09;本机的IP配置(用于net8局域网内解析主机IP和域名对应关系使用)&#xff08;可选&#xff09;虚拟机内的网络配置虚拟机ping不通www.baidu.com的情况下虚拟机ping可以ping…

ESP32 433mhz

从抖音抄了一大神的Arduino代码 # include <RCwitch.h> ///调用RC开关函数库 RCSwitch mySwitch RCSwitch(); //增加一个RC开关并设置名称 const int FRR 15; / 设置315MHz 无限模块的接受管脚 void setup(){Serial.begin(115200); //打开串口i设置波特率115200mySw…

ARM64架构栈帧以及帧指针FP

文章目录 前言一、arm64架构寄存器简介1.1 异常等级1.2 通用寄存器1.3 ARM64架构ABI 二、ARM64架构函数调用标准2.1 AArch64过程调用标准简介2.2 通用寄存器中的参数 三、demo分析3.1 main函数3.2 funb3.3 funa 四、栈帧总结五、demo演示参考资料 前言 这篇文章描述了 x86_64架…

智过网:一建36岁好不好找工作?能干什么?

在职业发展的道路上&#xff0c;许多人在不同的年龄阶段都会面临不同的挑战和机遇。对于36岁这一年龄阶段的人来说&#xff0c;如果已经通过了国家一级建造师&#xff08;一建&#xff09;的考试&#xff0c;那么他们在找工作方面会有怎样的前景呢&#xff1f;又能从事哪些职业…

气象预测新篇章:Python人工智能的变革力量

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

C#程序结构详解

目录 背景: 一、C#程序的基本组成部分 二、C# Hello World示例 三、程序结构解析 四、编译与执行C#程序 五、总结 背景: 在学习C#编程语言的过程中&#xff0c;了解程序的基本结构是非常重要的。C#程序由多个组成部分构成&#xff0c;每个部分都有其特定的功能和作用。下面…

20.变量的使用方式和注意事项

文章目录 一、变量的用法二、变量的注意事项三、总结 一、变量的用法 代码示例 public static void main(String[] args) {//1.基本用法// 定义变量&#xff0c;再进行输出int a 10;System.out.println(a);// 10System.out.println(a);// 10//2.变量参与计算int b 30;int c …