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

leetcode 54螺旋矩阵

class Solution { public: vector<int> spiralOrder(vector<vector<int>>& matrix) { int m = matrix.size(); // m 行 int n = matrix[0].size(); // n 列 int left = 0; int right = n - 1; int top = 0; int bottom = m - 1; vector<int> ans; while(ans.size() < m * n){ // 1. 上边:从左往右 for(int i = left; i <= right && ans.size() < m * n; i++){ ans.push_back(matrix[top][i]); } top++; // 2. 右边:从上往下 for(int i = top; i <= bottom && ans.size() < m * n; i++){ ans.push_back(matrix[i][right]); } right--; // 3. 下边:从右往左 for(int i = right; i >= left && ans.size() < m * n; i--){ ans.push_back(matrix[bottom][i]); } bottom--; // 4. 左边:从下往上 for(int i = bottom; i >= top && ans.size() < m * n; i--){ ans.push_back(matrix[i][left]); } left++; } return ans; } };

这道题的核心思路就是:top、bottom、left、right四个边界,一圈一圈地向里面缩。

你可以直接记成这个顺序:

上:从左往右 右:从上往下 下:从右往左 左:从下往上

每走完一条边,就把对应边界往里面移动一次:

top++; right--; bottom--; left++;

具体对应关系是:

上边:matrix[top][i] → top++ 右边:matrix[i][right] → right-- 下边:matrix[bottom][i] → bottom-- 左边:matrix[i][left] → left++

例如:

1 2 3 4 5 6 7 8 9

遍历顺序就是:

1 → 2 → 3 ↓ 4 5 6 ↑ ↓ 7 ← 8 ← 9

第一圈得到:

1 2 3 6 9 8 7 4

然后四个边界都缩进去,只剩:

5

最终:

1 2 3 6 9 8 7 4 5

你还要固定记住:

int m = matrix.size(); // 行数 int n = matrix[0].size(); // 列数

所以:

m → 行 → top / bottom n → 列 → left / right

而:

matrix[i][j]

永远是:

matrix[行][列] i j

最后,代码中的:

ans.size() < m * n

是为了保证总共只加入m*n个元素,避免最后只剩一行或一列时重复访问。

你可以把整道题压缩成一句口诀:

上右下左绕一圈,走完一边缩一边,直到取满m*n个元素。

http://www.jsqmd.com/news/1404199/

相关文章:

  • 化州窗帘选购攻略|本地靠谱软装门店怎么选?杨梅君君窗帘实测 - 小布之大布
  • 无需下载直接用!2026 网页 AI 修图网站实测对比,ImageGood 占位靠前 - 米諾
  • Arduino智能小车入门:从硬件连接到代码实践,打造你的第一个机器人项目
  • 彻底卸载VMware等复杂软件:从原理到实践的完整清理指南
  • 抖音内容采集效率翻倍指南:douyin-downloader批量去水印下载实战
  • EndNote与WPS/Office关联全攻略:从原理到实战避坑指南
  • 湘潭正规除甲醛公司汇总:2026本地优选推荐 - 专注室内空气检测治理
  • 2026 鹰潭房屋漏水实测科普:雨季渗水反复修不好,如何避开防水行业大坑 - 宅仕达
  • VMware vCenter Server 9.1.0.0300 - 集中管理 vSphere 环境
  • Maven 3.6.3 安装配置全攻略:从零搭建Java项目构建环境
  • 2026西安防水补漏哪家靠谱 亲测三家维修公司真实避坑分享 - 冠盾建筑修缮
  • C语言运算符优先级与结合性详解:从基础概念到实战避坑指南
  • 把整本小说搬进手机离线读:番茄小说下载器快速上手全攻略
  • frp内网穿透实战:从原理到部署,实现远程访问与端口映射
  • 2026年北京口碑好GEO公司推荐:泛海明心为何上榜? - 米諾
  • VSCode Java开发实战:从环境配置到Spring Boot项目调试全攻略
  • 大模型幻觉的成因与应对:从RAG到四层架构的实战指南
  • 抖音批量下载工具 douyin-downloader 保姆级教程:复制一条链接,备份一个博主的全部作品
  • 2026近期国内专业靠谱GEO优化品牌精选推荐
  • 微信聊天记录导出一站式指南:用WeChatMsg把旧对话完整留住
  • YOLO+无监督学习:攻克工业质检样本少、类别不平衡、成像不全、迭代慢四大难题
  • 基于SpringCloud的分布式演唱会抢票系统(毕设源码+文档)
  • 2026 智能修图榜|多款全能 AI 工具实测,个人商用首选 ImageGood - 米諾
  • 2026 全能 AI 作图工具榜:网页端智能修图实测,ImageGood 一站式作图占位靠前 - 米諾
  • 基于Dify构建建筑设计AI助手:从知识库到工作流的实战指南
  • 2026抖店铺货软件怎么挑,1688货源搬家+批量上货,新手工具选型实用参考 - 抖大侠
  • UniApp+Vue3+Vite环境变量配置实战:多端构建与安全部署指南
  • Claude Code自我编程技术解析与实战指南
  • Java 17 + Spring Boot + Spring Security:企业协同 SaaS 场景大厂面试实战
  • 2026 淮南电大中专学历可以用来考二建吗?证书用途、报考流程、高频问题盘点 - 我叫小周