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

【力扣hot100】【Leetcode 54】螺旋矩阵|边界控制 算法笔记及打卡(19/100)

【力扣】【Leetcode 54】螺旋矩阵|边界控制

给你一个mn列的矩阵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]

提示:

参考解答:

class Solution { public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> ans; if (matrix.empty()) return ans; int m = matrix.size(), n = matrix[0].size(); int top = 0, bottom = m - 1; //上下边界 int left = 0, right = n - 1; //左右边界 while (true) { // 左 → 右 for (int i = left; i <= right; ++i) ans.push_back(matrix[top][i]); if (++top > bottom) break; //等效于++top; if (top > bottom) break; // 上 → 下 for (int i = top; i <= bottom; ++i) ans.push_back(matrix[i][right]); if (--right < left) break; // 右 → 左 for (int i = right; i >= left; --i) ans.push_back(matrix[bottom][i]); if (--bottom < top) break; // 下 → 上 for (int i = bottom; i >= top; --i) ans.push_back(matrix[i][left]); if (++left > right) break; } return ans; } };

完整解法(由LLM辅助生成):

#include <iostream> #include <vector> using namespace std; int main() { int m, n; cin >> m >> n; vector<vector<int>> matrix(m, vector<int>(n)); // 输入矩阵 for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cin >> matrix[i][j]; } } vector<int> ans; // 四个边界 int top = 0; int bottom = m - 1; int left = 0; int right = n - 1; while (true) { // 1. 左 → 右 for (int i = left; i <= right; i++) ans.push_back(matrix[top][i]); top++; if (top > bottom) break; // 2. 上 → 下 for (int i = top; i <= bottom; i++) ans.push_back(matrix[i][right]); right--; if (left > right) break; // 3. 右 → 左 for (int i = right; i >= left; i--) ans.push_back(matrix[bottom][i]); bottom--; if (top > bottom) break; // 4. 下 → 上 for (int i = bottom; i >= top; i--) ans.push_back(matrix[i][left]); left++; if (left > right) break; } // 输出结果 for (int x : ans) cout << x << " "; cout << endl; return 0; }
http://www.jsqmd.com/news/681163/

相关文章:

  • AssetRipper完全指南:如何快速提取Unity游戏资源的终极解决方案
  • R与RStudio环境部署实战:从零配置到高效开发环境搭建
  • 3步掌握ReTerraForged:打造惊艳Minecraft世界的终极地形引擎
  • 2026最新整理:十大高清正版图片素材网站推荐,附商用授权说明及对比 - 品牌2025
  • 破解戴尔专属快充壁垒:从PD诱骗到电源芯片的完整DIY方案
  • 深入分析2026年诚信的机房清洁服务公司,北京地区哪家靠谱? - 工业推荐榜
  • VMware Workstation Pro 17终极指南:如何免费获取数千个激活密钥
  • 轻松掌握Nucleus Co-Op:单机游戏分屏多人同乐全面指南
  • 告别点点点!用Python脚本自动化你的Ansys Mechanical仿真流程(附完整代码)
  • 用STM32F103C8T6和LD3320做个会听话的台灯:从硬件选型到代码调试全流程避坑
  • Multi-Agent 运维架构设计:CIT 如何用 Supervisor + 5 专项 Agent 重构全球 IoT 运维
  • Pandas 2.1 核心升级:PyArrow集成优化与写入时复制实战解析
  • 深度聊聊上饶汽车隔热贴膜选哪家好,费用和口碑大揭秘 - mypinpai
  • 沃尔玛购物卡变现教程 - 团团收购物卡回收
  • 2026年精选:AI训练素材、数据集供应商推荐,覆盖多模态场景 - 品牌2025
  • 细聊吉林专业靠谱豆包广告公司,提供什么样的AI数字化营销服务? - 工业品网
  • 别再用Selenium被秒封了!2026最新反爬全突破+动态渲染实战(通过率99%)
  • Applite:让macOS软件管理告别命令行的图形化革命
  • R语言实战:从PCA双标图到变量贡献图的完整可视化流程
  • CANoe COM接口避坑指南:Python调用时Type Library和对象转换的那些‘坑’
  • 探讨国内适合亲子度假的酒店服务,怎么选择比较好? - 工业品牌热点
  • 成都有哪些值得推荐的高度近视眼镜店? - 红客云(官方)
  • 官方认证|2026年广州十大正规AI短视频制作代理商 / 运营商排名,光元智能综合实力遥遥领先 - 十大品牌榜
  • 项目开发日志 #2简易在线考试系统?
  • 保姆级教程:手把手教你用apt --fix-broken install解决Ubuntu依赖冲突(附镜像更换)
  • 自托管 AI 投研助手的工程实践:Hermes Agent + Bedrock + 开源金融数据源
  • 每周广告百万,用广告包围用户的泰兰尼斯该咋看?
  • 如何快速批量下载抖音无水印视频:面向新手的完整教程
  • 官方认证|2026年国内十大正规AI数字人代理商 / AI数字人运营商排名,广州等地,光元智能综合实力遥遥领先 - 十大品牌榜
  • 八大网盘直链解析工具终极指南:告别下载限速,轻松获取高速下载地址