螺旋矩阵数组类题型
第 4 天 模拟算法 59. 螺旋矩阵 II 总结数组类题型解题框架 题目建议: 本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。 题目链接:https://leetcode.cn/problems/spiral-matrix-ii/ 视频讲解:https://www.bilibili.com/video/BV1SL4y1N7mV/
本题为模拟顺时针螺旋填充的过程,重点在于如何确定边界和起始位置的每次变化。
1.界定边界:
startx:x轴的起始位置为0;starty:y轴的起始位置为0;
setoff:记录每一次螺旋,在边长的基础上,需要减去的长度;
count:按螺旋的先后标记序号,赋值给后续需要遍历的数组,每标记完就加1。
<注>记录每条边的循环时,保持四条边的边长一致,否则边界易混乱。
2.while条件,n为奇数
while条件:n/2表示一共需要经历螺旋的次数。
当n为偶数时,经历n/2次循环,正方形恰好填满;
当n为奇数是,经历n/2次还剩下中心的一个点未填满,需要用if语句来填充(29~31行)。
3.时间复杂度:
O(n*n),需要访问n*n个元素,每个元素访问一次
4.空间复杂度:
O(1),仅使用常数个变量,结果数组的空间不记录额外空间
