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

螺旋矩阵总结

1.leetcode 59

2.leetcode 54

这两道题的核心区别如下:

对比项LeetCode 54 螺旋矩阵LeetCode 59 螺旋矩阵 II
输入给你一个现成矩阵只给一个数字 n
输出按螺旋顺序返回一维数组生成 n×n 螺旋矩阵并返回
方向顺序右→下→左→上完全一样:右→下→左→上
遍历方式读取元素(不修改原矩阵)填充数字(修改矩阵)
边界判断必须每一步判断,防止越界因为是 n×n 正方形,更简单
结束条件上下 / 左右边界交叉即停填完 1~n² 自动结束
是否会剩单行 / 列一定会(任意矩形)不会(正方形,刚好填满)
难度稍难(处理矩形、越界)更简单(标准正方形圈)

代码里的易错点总结:

1. 59 题(生成正方形)易错点 - **变量重复定义**: 你在第10行定义了 `int i,j;`,又在循环内 `int i = startx; int j = starty;`,虽然语法允许,但容易混淆作用域。

✅ 建议:要么只在循环内定义,要么外层定义后循环内直接赋值。

- **中间元素赋值**: 你注释里特别提到:`不能用i,j,因为出了while循环,ij已经自减到0了`,这是非常关键的易错点! ✅ 必须用 `mid = n/2` 单独赋值,不能依赖循环里的 `i/j`。

- **offset 边界逻辑**: `j < n - offset` 这种写法是「左闭右开」,如果写成 `<=` 会重复赋值/越界。 ✅ 必须严格遵守「末位不遍历」的规则,否则会和下一条边重复。 -

**圈数计算**: `loop = n/2` 只适用于正方形,长方形会多算/少算,**绝对不能**套用到54题。

2. 54 题(读取长方形)易错点 -

**边界判断遗漏**: 你之前的代码如果不加 `if(top>bottom) break` 这类判断,会直接报内存越界(就是你遇到的 `0xbebebebe` 错误)。

✅ 每条边走完必须收缩边界并判断是否还有剩余元素。

- **空矩阵访问**: 你现在的代码没加空矩阵判断,如果输入 `[]` 或 `[[]]`,访问 `matrix[0].size()` 会崩溃。 ✅ 开头必须加 `if(matrix.empty() || matrix[0].size()) return res;`。

- **for 循环初始化警告**: 你之前写 `for(j;j<...;j++)` 会触发 `expression result unused` 警告。 ✅ 正确写法是 `for(;j<...;j++)` 或重新定义循环变量(如 `for(int col=left;...;col++)`)。

- **方向顺序**: 必须严格按「右→下→左→上」,一旦顺序错,结果就完全乱掉。

三、两种写法的本质区别

1. **59 是「主动生成」**: - 已知最终形状是正方形,所以可以提前算圈数、用 `offset` 控制每圈范围。 - 逻辑更简单,不会出现「走一半就没了」的情况。

2. **54 是「被动读取」**: - 输入形状未知(可能是长条、扁条),必须用动态边界实时判断。 - 核心是「**走一步看一步**」,每一步都要确认还有没有元素可走。

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

相关文章:

  • 2.2.1 - 3D图搜索算法(以A*为例) - Python运动规划库教程(Python Motion Planning)
  • Mysql安装测试--初入心得
  • Flutter 三方库 async_recursion 的鸿蒙化适配指南 - 稳健的异步递归治理,征服鸿蒙深层数据结构
  • ArkClaw让“养虾”更安全!火山引擎AI助手安全解决方案全面升级
  • 数据结构STL库(从入门到精通,适合小白)
  • 记一次 .NET 某放射治疗光学定位软件 卡死分析
  • 从通用Agent到领域Agent:技术原理与演进路径
  • 人工智能之数学基础:全微分的介绍
  • 【快速见刊】第二届生态环境保护、环境监测与修复国际学术会议(EPEMR 2026)
  • Jvm和垃圾回收精讲
  • 基于 ESP32S3 的 LVGL 9.4 图形库移植与 UI 开发实践分享(课程作业)
  • 鸿蒙常见问题分析三十三:如何解决Column子组件超出容器边界
  • OJ50 51 52
  • Leecode 18. 四数之和
  • 2026商家寄件价格避坑指南:5个省钱雷区别再踩!
  • SQL-存储引擎
  • Flutter 三方库 argos_translator_offline 的鸿蒙化适配指南 - 让机器翻译回归“端侧隔离”,打造鸿蒙应用专家级的离线多语言 AI 治理中台
  • 盘点10大主流AI Agent框架(非常详细),多智能体技术从入门到精通,收藏这一篇就够了!
  • 基于 Java + SpringBoot + Vue + MySQL 的游戏账号交易系统实战指南
  • 《MPMLS》 2026.3.12
  • 【Day4】
  • 推荐斯坦福计算机课程CS146S:当代软件工程师
  • 深度剖析DbContext的ChangeTracker:Entity状态管理与数据持久化关键
  • JMM——Java内存模型简介
  • 2026年电商生鲜海报制作复盘:从选图到定稿的全流程
  • AI Agent 实战:从零搭建你的第一个智能助手
  • 代码随想录Day2
  • 【2026最新版】PCL点云处理算法汇总(C++长期更新版)
  • Node.js RESTful API 深入解析
  • 2026年新能源汽车市场将走向何方?这份深度调研为你揭晓答案!