news 2026/7/7 13:29:18

⭐力扣刷题:螺旋矩阵

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
⭐力扣刷题:螺旋矩阵

题目:
给你一个 m 行 n 列的矩阵 matrix ,请按照顺时针螺旋顺序,返回矩阵中的所有元素。

示例1:

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]

示例2:

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]

解析:
这里的核心思路是:边界收缩法

  1. 建立四个边界指针
    我们维护四个变量来标记当前要遍历的"层"的边界:

    top:当前层的顶部行索引

    bottom:当前层的底部行索引

    left:当前层的左边界列索引

    right:当前层的右边界列索引

    初始化时:

    top = 0(矩阵最上面一行)

    bottom = 矩阵行数-1(矩阵最下面一行)

    left = 0(矩阵最左边一列)

    right = 矩阵列数-1(矩阵最右边一列)

  2. 循环执行四个方向的遍历
    每一轮循环完成一圈的遍历,包含四个阶段:

    阶段1️⃣:从左到右遍历上边界

    从 left 到 right,遍历第 top 行的元素

    完成后,top++(上边界向下移动一层)

    阶段2️⃣:从上到下遍历右边界

    从 top 到 bottom,遍历第 right 列的元素

    完成后,right–(右边界向左移动一层)

    阶段3️⃣:从右到左遍历下边界

    从 right 到 left,遍历第 bottom 行的元素

    完成后,bottom–(下边界向上移动一层)

    阶段4️⃣:从下到上遍历左边界

    从 bottom 到 top,遍历第 left 列的元素

    完成后,left++(左边界向右移动一层)

  3. 终止条件
    每个方向遍历结束后,都需要检查是否还有元素未遍历:

    当 top > bottom 时:所有行都已遍历完

    当 left > right 时:所有列都已遍历完

    只要满足其中一个条件,说明所有元素都已遍历完毕,循环终止。

具体代码:

/** * @param {number[][]} matrix * @return {number[]} */varspiralOrder=function(matrix){letleft=0letright=matrix[0].length-1lettop=0letbottom=matrix.length-1letres=[]while(true){//从左到右遍历上边界for(leti=left;i<=right;i++){res.push(matrix[top][i])}top++if(top>bottom)break//从上到下遍历右边界for(letj=top;j<=bottom;j++){res.push(matrix[j][right])}right--if(right<left)break//从右到左遍历下边界for(letk=right;k>=left;k--){res.push(matrix[bottom][k])}bottom--if(bottom<top)break//从下到上遍历左边界for(letm=bottom;m>=top;m--){res.push(matrix[m][left])}left++if(left>right)break}returnres};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 8:57:58

DeepSeek-R1:开源大模型推理革命,6710亿参数如何重塑行业格局

导语 【免费下载链接】DeepSeek-R1 探索新一代推理模型&#xff0c;DeepSeek-R1系列以大规模强化学习为基础&#xff0c;实现自主推理&#xff0c;表现卓越&#xff0c;推理行为强大且独特。开源共享&#xff0c;助力研究社区深入探索LLM推理能力&#xff0c;推动行业发展。【此…

作者头像 李华
网站建设 2026/7/7 14:26:56

毕设分享 垃圾邮件(短信)分类 算法实现

文章目录1 前言2 垃圾短信/邮件 分类算法 原理2.1 常用的分类器 - 贝叶斯分类器3 数据集介绍4 数据预处理5 特征提取6 训练分类器7 综合测试结果8 其他模型方法1 前言 Hi&#xff0c;大家好&#xff0c;这里是丹成学长&#xff0c;今天做一个nlp项目&#xff0c;基于机器学习的…

作者头像 李华
网站建设 2026/7/7 12:44:21

Spring Cloud Alibaba + Sentinel

在微服务世界里&#xff0c;每个服务就像一个小摊位&#xff0c;生意火爆时&#xff0c;人流汹涌&#xff0c;如果没有保护措施&#xff0c;小摊很容易被“压垮”。这时候&#xff0c;你就需要 Sentinel——微服务界的“护身符”&#xff0c;帮你抵御流量暴击、保护系统稳定运行…

作者头像 李华
网站建设 2026/7/7 6:43:34

一键检测微信网址是否被拦截,附送 PHP/Python/Go 对接源码

分享信息到微信&#xff0c;本是一件再平常不过的事情&#xff0c;但“该内容已被分享到微信”或直接打不开的提示&#xff0c;却像一道无形的墙&#xff0c;阻碍了信息的自由流通。这不仅影响了用户体验&#xff0c;更可能导致推广效果大打折扣。今天&#xff0c;我就来为大家…

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

【重学MySQL】一文搞懂行级锁 无废话版

&#x1f468;‍&#x1f4bb;程序员三明治&#xff1a;个人主页&#x1f525; 个人专栏: 《设计模式精解》 《重学数据结构》&#x1f91e;先做到 再看见&#xff01; 目录行级锁Record LockGap LockNext-Key Lockselect ... for update有啥用&#xff1f;我不加for update不行…

作者头像 李华
网站建设 2026/7/6 17:13:22

7个重塑知识生产力的Obsidian Zettelkasten模板设计策略

7个重塑知识生产力的Obsidian Zettelkasten模板设计策略 【免费下载链接】Obsidian-Templates A repository containing templates and scripts for #Obsidian to support the #Zettelkasten method for note-taking. 项目地址: https://gitcode.com/gh_mirrors/ob/Obsidian-…

作者头像 李华