news 2026/8/6 16:16:18

重走力扣hot的矩阵

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
重走力扣hot的矩阵

目录

矩阵置零

螺旋矩阵


矩阵置零

73. 矩阵置零 - 力扣(LeetCode)

法一:

引入两个HashSet容器,分别记录元素为0的横坐标与纵坐标

空:O(M+N)

代码

class Solution_2026_1_26_1 { int m; int n; public void setZeroes(int[][] matrix) { Set<Integer> row_zero=new HashSet(); Set<Integer> col_zero=new HashSet(); m=matrix.length; n=matrix[0].length; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(matrix[i][j]==0){ row_zero.add(i); col_zero.add(j); } } } for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ //Set无get方法 if(row_zero.contains(i)||col_zero.contains(j)){ matrix[i][j]=0; } } } } }

优化:空间复杂度优化为O(1)

重点:区分第一行和第一列的0是本身就是0还是被修改为0的

class Solution { public void setZeroes(int[][] matrix) { //进行优化 空间复杂度降低为O(1) boolean hasRowZero=false; boolean hasColZero=false; int m=matrix.length; int n=matrix[0].length; //检查第一行是否有为0的 for(int i=0;i<n;i++){ //检查第一行是否为空 //但本质上第一行处理的是列 if(matrix[0][i]==0){ hasRowZero=true; break; } } for(int i=0;i<m;i++){ //检查第一列是否为空 //但本质上第一列处理的是行 if(matrix[i][0]==0){ hasColZero=true; break; } } //遍历二维数组 进行标记 for(int i=1;i<m;i++){ for(int j=1;j<n;j++){ if(matrix[i][j]==0){ matrix[0][j]=0; matrix[i][0]=0; } } } for(int i=1;i<m;i++){ for(int j=1;j<n;j++){ if(matrix[0][j]==0||matrix[i][0]==0){ matrix[i][j]=0; } } } //单独处理第一行为0的情况 if(hasRowZero){ for(int i=0;i<n;i++){ matrix[0][i]=0; } } if(hasColZero){ for(int i=0;i<m;i++){ matrix[i][0]=0; } } } }

螺旋矩阵

54. 螺旋矩阵 - 力扣(LeetCode)

个人认为关键点就是理清除过程,先从左往右处理上边界,然后从上往下处理右边界,然后从右往左处理下边界,最后在从下往上处理左边界即可,理清楚过程即可

class Solution { public List<Integer> spiralOrder(int[][] matrix) { int m=matrix.length; int n=matrix[0].length; List<Integer> ret=new ArrayList<>(); int left=0; int right=n-1; int top=0; int bottom=m-1; while(left<=right&&top<=bottom){ for(int i=left;i<=right;i++){ ret.add(matrix[top][i]); //从左往右处理 } top++; //从上往下 for(int i=top;i<=bottom;i++){ ret.add(matrix[i][right]); //从下往上处理 } right--; //从后往前 if(top<=bottom){ for(int i=right;i>=left;i--){ //从后往前 ret.add(matrix[bottom][i]); } //从下往上 bottom--; } if(left<=right){ for(int i=bottom;i>=top;i--){ ret.add(matrix[i][left]); } //从前往后 left++; } } return ret; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/1 15:42:04

YOLOv10官版镜像实战:无人机航拍图像检测落地

YOLOv10官版镜像实战&#xff1a;无人机航拍图像检测落地 在低空智能感知场景中&#xff0c;一个反复出现的现实困境是&#xff1a;算法工程师调通的YOLOv8模型&#xff0c;在实验室电脑上能精准识别行人和车辆&#xff0c;但一放到无人机边缘设备上就漏检严重——小目标模糊、…

作者头像 李华
网站建设 2026/8/5 4:37:31

DeepSeek-R1-Distill-Qwen-1.5B蒸馏技术解析:精度保留实战评测

DeepSeek-R1-Distill-Qwen-1.5B蒸馏技术解析&#xff1a;精度保留实战评测 你是否遇到过这样的困扰&#xff1a;想在边缘设备上跑一个数学能力不错的轻量模型&#xff0c;但要么太慢、要么答不准、要么部署起来像解一道高难度应用题&#xff1f;DeepSeek-R1-Distill-Qwen-1.5B…

作者头像 李华
网站建设 2026/8/4 14:02:27

4步打造黑苹果配置选型指南:macOS版本匹配策略与避坑实践

4步打造黑苹果配置选型指南&#xff1a;macOS版本匹配策略与避坑实践 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否在黑苹果配置过程中遭遇过…

作者头像 李华
网站建设 2026/7/30 11:54:12

MGeo模型输出结果解读:相似度分数阈值设定策略分析

MGeo模型输出结果解读&#xff1a;相似度分数阈值设定策略分析 1. 为什么地址匹配需要“相似度分数”这个概念&#xff1f; 你有没有遇到过这样的情况&#xff1a;用户在电商下单时把“北京市朝阳区建国路8号”写成了“北京朝阳建国路8号”&#xff0c;或者把“上海市浦东新区…

作者头像 李华
网站建设 2026/7/31 4:44:47

AI读脸术成本核算:每月资源消耗与优化建议分析报告

AI读脸术成本核算&#xff1a;每月资源消耗与优化建议分析报告 1. 什么是AI读脸术&#xff1a;从一张照片看懂年龄与性别 你有没有想过&#xff0c;随手拍的一张自拍照&#xff0c;除了发朋友圈&#xff0c;还能告诉我们什么&#xff1f;比如这张脸大概多大年纪、是男生还是女…

作者头像 李华
网站建设 2026/8/5 18:52:31

OpCore Simplify: 智能配置驱动的OpenCore EFI解决方案

OpCore Simplify: 智能配置驱动的OpenCore EFI解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 如何用OpCore Simplify实现黑苹果系统的高效搭…

作者头像 李华