给定一个 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]]
- package TOP11_20;
-
- import java.util.HashSet;
- import java.util.Set;
-
- // 矩阵置零
- //给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
- // 输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
- //输出:[[1,0,1],[0,0,0],[1,0,1]]
- public class Top18 {
- // 用两个hash表记录行和列为0的数据 然后再修改数组值
- public static void setZeroes(int[][] matrix) {
- Set colZeroSets = new HashSet();
- Set rowZeroSets = new HashSet();
- int row = matrix.length;
- int height = matrix[0].length;
- for (int i = 0; i < row; i++) {
- for (int j = 0; j < height; j++) {
- if (matrix[i][j] == 0) {
- colZeroSets.add(i);
- rowZeroSets.add(j);
- }
- }
- }
-
- for (int i = 0; i < row; i++) {
- for (int j = 0; j < height; j++) {
- if (colZeroSets.contains(i) || rowZeroSets.contains(j)) {
- matrix[i][i] = 0;
- }
- }
- }
- }
-
- // 直接用第一行和第一列 来记录,但先将第一行和第一列是否有为0的数据记录下来 然后再赋值,最后赋值第一行和第一列
- public static void setZeroes2(int[][] matrix) {
- int row = matrix.length;
- int height = matrix[0].length;
- boolean firstRowHasZero = false;
- boolean firstColHasZero = false;
- for(int i=0 ;i
|
- if(matrix[i][0] ==0)
- {
- firstRowHasZero = true;
- break;
- }
- }
- for(int j=0 ;j
- if(matrix[0][j] ==0)
- {
- firstColHasZero = true;
- break;
- }
- }
-
- for(int i =1;i
|
- for(int j=1;j
- if(matrix[i][j] ==0){
- matrix[i][0] =0;
- matrix[0][j] = 0;
- }
- }
- }
- for(int i = 1;i
|
- for(int j =1;j
- if(matrix[i][0] ==0 || matrix[0][j] ==0){
- matrix[i][j] =0;
- }
- }
- }
- if(firstRowHasZero) {
- for(int i=0 ;i
|
- matrix[i][0] =0;
- }
- }
- if(firstColHasZero) {
- for(int j=0 ;j
- matrix[0][j] =0;
- }
- }
- }
-
- public static void main(String[] args) {
- int[][] martirc = {{1,1,1},{1,0,1},{1,1,1}};
- setZeroes2(martirc);
- System.out.println("end");
- }
- }
-
相关阅读:
一文2600字教你接口测试基本知识点(超全)
【2022毕业季】从毕业到转入职场
Maven项目目录结构和pom文件解读
菜鸟理解int为啥是4个字节
经典面试题 | 讲一讲 JVM 的组成
微信小程序的养发护发馆客户管理系统
分享一个springboot+uniapp基于微信小程序的校医务室健康服务系统源码 lw 调试
【2023年11月第四版教材】第16章《采购管理》(合集篇)
测试面试总结
Linux命令(107)之basename
-
原文地址:https://blog.csdn.net/harryptter/article/details/133241128
-
最新文章
-
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU