【代码随想录刷题总结】leetcode59-螺旋矩阵II
引言
大家好啊,我是前端拿破轮😁。
跟着卡哥学算法有一段时间了,通过代码随想录的学习,受益匪浅,首先向卡哥致敬🫡。
但是在学习过程中我也发现了一些问题,很多当时理解了并且AC的题目过一段时间就又忘记了,或者不能完美的写出来。根据费曼学习法,光有输入的知识掌握的是不够牢靠的,所以我决定按照代码随想录的顺序,输出自己的刷题总结和思考。同时,由于以前学习过程使用的是JavaScript,而在2025年的今天,TypeScript几乎成了必备项,所以本专题内容也将使用TypeScript,来巩固自己的TypeScript语言能力。
题目信息
螺旋矩阵II
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

题目分析
本题是一道经典的面试题,主要考察模拟和对二维数组的理解。
这里在循环的时候,很多同学把循环条件设置为num <= n^2,这样当然也可以,但是就需要再循环中判断边界条件,如越界和是否已经填过。
其实本题可以以一种极其简单和容易理解的方式去模拟,不用过多解释,直接看代码就能懂。
题解
1 | function generateMatrix(n: number): number[][] { |
复杂度分析
每一个位置都需要遍历一次,时间复杂度为$O(n^2)$
需要一个二维数组来保存结果,空间复杂度为$O(n^2)$
总结
在每一个方向遍历的时候,一定要记得移动边界位置,否则会重复遍历。
如向右遍历后,一定要记得将rowStart++。
好了,这篇文章就到这里啦,如果对您有所帮助,欢迎点赞,收藏,分享👍👍👍。您的认可是我更新的最大动力。
往期推荐✨✨✨
我是前端拿破轮,我们下期见!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 马嘉路!
评论



