每日一题:矩阵置零

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

使用两个标记变量。

class Solution {public void setZeroes(int[][] matrix) {
boolean row = false;boolean col = false;int n = matrix[0].length;for(int i = 0;i < n;i++){if(matrix[0][i] == 0){row = true;}}for(int i = 0;i < matrix.length;i++){if(matrix[i][0] == 0){col = true;}}for(int i = matrix.length - 1;i > 0 ;i--){for(int j = 0;j < n;j++){if(matrix[i][j] == 0){matrix[i][0] = 0;matrix[0][j] = 0;}}}for(int i = matrix.length - 1;i > 0 ;i--){if(matrix[i][0] == 0){for(int j = 1;j < n;j++){matrix[i][j] = 0;}}}for(int i = 1;i < n;i++){if(matrix[0][i] == 0){for(int j = 1;j < matrix.length;j++){matrix[j][i] = 0;}}}if(row){for(int i = 0;i < n;i++){matrix[0][i] = 0;}}if(col){for(int i = 0;i < matrix.length;i++){matrix[i][0] = 0;}}for(int i = 0;i < matrix.length;i++){for(int j = 0;j < n;j++){System.out.print(matrix[i][j] + " ");}System.out.print("\n");}}
}

row和col,用于标记是否需要将第一行和第一列设置为0。然后,通过遍历第一行和第一列的元素,判断是否存在0,如果存在则将对应的布尔变量设置为true。

接下来,使用两个嵌套的for循环遍历矩阵中的每个元素。如果某个元素为0,则将该元素所在的行的第一个元素和所在列的第一个元素都设置为0。这样做的目的是在不直接修改原始矩阵的情况下,记录下哪些行和列需要被设置为0。

然后,再次使用两个嵌套的for循环遍历矩阵中的每个元素。如果某个元素所在的行的第一个元素或所在列的第一个元素为0,则将该元素设置为0。这样就能将所有包含0的行和列都设置为0。

最后,根据之前记录的row和col的值,如果需要将第一行或第一列设置为0,则进行相应的操作。

代码优化后:

class Solution {public void setZeroes(int[][] matrix) {
boolean row = false;boolean col = false;int n = matrix[0].length;for(int i = 0;i < n;i++){if(matrix[0][i] == 0){row = true;}}for(int i = 0;i < matrix.length;i++){if(matrix[i][0] == 0){col = true;}}for(int i = matrix.length - 1;i > 0 ;i--){for(int j = 0;j < n;j++){if(matrix[i][j] == 0){matrix[i][0] = 0;matrix[0][j] = 0;}}}for(int i = matrix.length - 1;i > 0 ;i--){if(matrix[i][0] == 0){for(int j = 1;j < n;j++){matrix[i][j] = 0;}}}for(int i = 1;i < n;i++){if(matrix[0][i] == 0){for(int j = 1;j < matrix.length;j++){matrix[j][i] = 0;}}}if(row){for(int i = 0;i < n;i++){matrix[0][i] = 0;}}if(col){for(int i = 0;i < matrix.length;i++){matrix[i][0] = 0;}}}
}

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

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

相关文章

行云防水堡-打造企业数据安全新防线

企业数据安全&#xff0c;顾名思义就是通过各种手段或者技术或者工具保障企业数据的安全性&#xff1b;保障数据信息的硬件、软件及数据受到保护&#xff0c;不受偶然的或者恶意的原因而遭到破坏、更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;信息服务不中断。目…

简简单单学下python3

学习目的&#xff1a;for pytorch 输出 print("Hello World!")默认换行&#xff0c;设置不换行print("Hello World!", end"") 输入 n input("pls input a num") 注释 #, """ py中和"完全相同 缩进 用空格…

无人机容易炸机的五大条,快看看你中了几条!!!

1.喜欢在阳台起飞。 在高楼的阳台起飞是非常危险的操作&#xff0c;因为没有GPS信号&#xff0c;在阳台上无人机采用的是视觉定位&#xff0c;如果楼层过高&#xff0c;视觉定位就会失效&#xff0c;无人机进入姿态模式&#xff0c;容易导致高空炸机。这种情况可以快速飞去开阔…

谷歌(Google)技术面试——在线评估问题(三)

谷歌&#xff08;Google&#xff09;面试过程的第一步&#xff0c;你可能会收到一个在线评估链接。 评估有效期为 7 天&#xff0c;包含两个编码问题&#xff0c;需要在一小时内完成。 以下是一些供你练习的在线评估问题。 在本章结尾处&#xff0c;还提供了有关 Google 面试不…

如何在家自制电子杂志:简易指南

随着数字化时代的到来&#xff0c;电子杂志已经成为了人们获取信息和娱乐的重要途径之一。而在家自制电子杂志不仅可以满足个人创作的愿望&#xff0c;还能够分享自己的见解和知识&#xff0c;与他人交流互动 那要怎么制作呢&#xff1f;我有一个方法&#xff0c;可以参考一下 …

【uniapp】个推H5号码认证一键登录(附代码)

前言 最近在做APP、h5产品&#xff0c;登陆注册成了难题。邮箱验证多数人不会使用&#xff0c;还是短信方便点&#xff0c;短信可以采用号码认证和验证码的方式&#xff0c;前者稍微便宜的&#xff0c;关于性价比和上手程度我推荐个推&#xff0c; 于是有了今天这篇案例记录&a…

大模型技术应用实训室解决方案

一、建设背景 随着大数据、云计算等技术的不断进步&#xff0c;大模型技术已成为人工智能领域的重要研究方向&#xff0c;其在自然语言处理、计算机视觉、语音识别等领域展现出强大的应用潜力。自2022年11月ChatGPT问世以来&#xff0c;大模型开始备受关注&#xff0c;科技巨头…

PPT 操作

版式 PPT中&#xff0c;巧妙使用母版&#xff0c;可以提高效率。 双击母版&#xff0c;选择其中一个版式&#xff0c;插入装饰符号。 然后选择关闭。 这个时候&#xff0c;在该版式下的所有页面&#xff0c;就会出现新加入的符号。不在该版式下的页面&#xff0c;不会出现新加…

Go-Gin中优雅的实现参数校验,自定义错误消息提示

问题描述 在参数校验的时候我们一般会基于"github.com/go-playground/validator/v10"这个库给结构体加标签实现校验参数&#xff0c;当参数校验错误的时候&#xff0c;他的提示一般是英文的&#xff0c;怎么自定义参数错误提示呢&#xff1f;跟着我一步步来 注册校…

2024/4/1—力扣—两数相除

代码实现&#xff1a; 思路&#xff1a;用减法模拟除法 // 用减法模拟除法 int func(int a, int b) { // a、b均为负数int ans 0;while (a < b) { // a的绝对值大于等于b&#xff0c;表示此时a够减int t b;int count 1; // 用来计数被减的次数// t > INT_MIN / 2:防止…

鸿蒙实现一种仿小红书首页滑动联动效果

前言&#xff1a; DevEco Studio版本&#xff1a;4.0.0.600 效果描述&#xff1a;通过手指滑动列表&#xff0c;控制位置显示效果为&#xff1a;不论列表在什么位置下滑时下图粉色位置布局显示&#xff0c;手指上滑时下图粉色位置布局隐藏。 效果&#xff1a; 原理分析&…

怎样恢复已删除的照片?教你3个方法,一键恢复!

很多人喜欢以拍照的形式记录生活&#xff0c;手机里的照片就很容易堆积成山&#xff0c;但当内存不够用时就不得不选择删除。可是这些美好的照片始终是很多人心中抹不去的记忆&#xff0c;那么该怎样恢复已删除的照片呢&#xff1f;下面几招&#xff0c;教你一键恢复&#xff0…