当前位置: 首页 > news >正文

LeetCode算法题解:螺旋矩阵


LeetCode算法题解:螺旋矩阵

题目描述

给定一个 m x n 的矩阵,按照螺旋顺序返回矩阵中的所有元素。

解题思路

1. 初始化变量

我们首先定义四个边界变量来跟踪螺旋遍历的边界:topbottomleftright

2. 螺旋遍历

开始从左到右遍历上边界,然后从上到下遍历右边界,接着从右到左遍历下边界,最后从下到上遍历左边界。这个过程会持续,直到所有元素都被遍历。

3. 添加判断条件

为了确保遍历的正确性和避免重复添加元素,我们需要在从右到左和从下到上的遍历过程中添加判断条件。

代码实现

public List<Integer> spiralOrder(int[][] matrix) {List<Integer> res = new ArrayList<>();if (matrix == null || matrix.length == 0) return res;int top = 0, bottom = matrix.length - 1;int left = 0, right = matrix[0].length - 1;while (top <= bottom && left <= right) {for (int i = left; i <= right; i++) {res.add(matrix[top][i]);}top++;for (int i = top; i <= bottom; i++) {res.add(matrix[i][right]);}right--;if (top <= bottom) {for (int i = right; i >= left; i--) {res.add(matrix[bottom][i]);}}bottom--;if (left <= right) {for (int i = bottom; i >= top; i--) {res.add(matrix[i][left]);}}left++;}return res;
}

注意点与优化

  • 在从右到左和从下到上的遍历过程中,我们添加了判断条件来避免重复添加元素和确保遍历的正确性。

总结

通过上述方法和代码实现,我们可以按照螺旋顺序遍历给定的矩阵,并将其所有元素存储在结果列表中。通过合理的边界控制和条件判断,我们确保了遍历的正确性和高效性。


http://www.lryc.cn/news/279365.html

相关文章:

  • 【Java 设计模式】设计原则之开放封闭原则
  • 数据分析求职-知识脑图
  • SQL-修改数据
  • Rockchip | FIQ-Debugger调试工具
  • 第二百六十三回 给geolocator插件提交问题
  • 分组背包问题
  • WinForm 中Label自动换行 解决方法
  • 【蓝桥杯软件赛 零基础备赛20周】第7周——二叉树
  • SpringBoot+SSM项目实战 苍穹外卖(12) Apache POI
  • Maven 基础总结篇
  • MySQL的导入导出及备份
  • 【机器学习】常见算法详解第2篇:K近邻算法各种距离度量(已分享,附代码)
  • @KafkaListener指定kafka集群
  • 什么是算法的空间复杂度?
  • WebDav协议相关软件@简单配置局域网内的http和WebDav服务器和传输系统
  • 自定义数据实现SA3D
  • 设计模式基础概念:探索设计模式的魅力
  • 【Leetcode】2182. 构造限制重复的字符串
  • Kubernetes(K8S)云服务器实操TKE
  • 设置弹窗随鼠标位置移动
  • Spring Boot实现数据加密脱敏:注解 + 反射 + AOP
  • jmeter和meterSphere如何使用第三方jar包
  • API对象上千个,有啥关联性,kubectl-tree一键搞定
  • java自定义工具类在List快速查找相同字段值对象
  • codeforces Hello 2024 - C - Grouping Increases --- 题解
  • STM32H5培训(一)总览
  • 亚马逊云科技 WAF 部署小指南(五):在客户端集成 Amazon WAF SDK 抵御 DDoS 攻击...
  • 高光谱分类论文解读分享之基于多模态融合Transformer的遥感图像分类方法
  • Trans论文复现:基于数据驱动的新能源充电站两阶段规划方法程序代码!
  • 将抖音视频转成MP3并下载