当前位置:网站首页>螺旋矩阵_数组 | leecode刷题笔记
螺旋矩阵_数组 | leecode刷题笔记
2022-08-04 01:00:00 【Begonia_cat】
59. 中等
螺旋矩阵II
题目:给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
.
示例:输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
思路:坚持循环不变量原则,自始至终坚持左闭右开区间可以用range()来实现,range是前开后闭的
,进行循环。【图片来自carl哥的代码随想录】
注意:含有n²
个元素的方形二维数组,其长宽均为n
!这个要搞清楚。
代码的第一步是:初始化一个n行n列的二维数组
,初始化为全零数组。
当n = 4时:
当n = 5时:
四个方向每步各次n-1
步,当n为奇数时,二维矩阵有中心点。∵
数组的下标是从0开始的,所以:
当n=3
时,中心点的索引为[1,1]
;
当n=5
时,中心点的索引为[2,2]
;∴
n为奇数时,索引坐标为[n//2, n//2]
从左至右,从上至下,从右至左,总下至上
为一次循环,n=3
时,循环1次
+1个中心点
n=4
时,循环2次
n=5
时,循环2次
+1个中心点
n=6
时,循环3次
循环次数=n//2
+1个中心点(n为奇数时)
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
nums = [[0] * n for _ in range(n)] # 初始化为n行n列的二维数组
startx, starty = 0, 0 #起始点为0行0列处
loop, mid = n//2, n//2 # 迭代次数、n为奇数时,矩阵的中心点
count = 1 # 计数
for offset in range(1, loop + 1):
for i in range(starty, n-offset): # 从左往右, startx保持不变, starty递增
nums[startx][i] = count
count += 1
for i in range(startx, n-offset): # 从上至下, starty保持不变,startx递增
nums[i][n-offset] = count
count += 1
for i in range(n-offset, starty, -1): # 从右至左, startx保持不变,starty递减
nums[n-offset][i] = count
count += 1
for i in range(n-offset, startx, -1): # 从下至上, starty保持不变,,startx递减
nums[i][starty] = count
count += 1
# 更新起点
startx += 1
starty += 1
if n%2 == 1: # n为奇数时,填充中心点
nums[mid][mid] = count
return nums
54. 中等
螺旋矩阵
题目:给你一个 m 行 n 列的矩阵 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]
待更……
边栏推荐
- 迭代扩展卡尔曼滤波IEKF
- 阿里云技术专家邓青琳:云上跨可用区容灾和异地多活最佳实践
- Electronics manufacturing enterprise deployment WMS what are the benefits of warehouse management system
- Vant3—— 点击对应的name名称跳转到下一页对应的tab栏的name的位置
- Apache DolphinScheduler新一代分布式工作流任务调度平台实战-中
- Spinnaker调用Jenkins API 返回403错误
- Apache DolphinScheduler新一代分布式工作流任务调度平台实战-中
- Linux安装mysql最简单教程(一次成功)
- 【性能优化】MySQL性能优化之存储引擎调优
- Observability:你所需要知道的关于 Syslog 的一些知识
猜你喜欢
随机推荐
Electronics manufacturing enterprise deployment WMS what are the benefits of warehouse management system
2015年开源大事件汇总
【虚拟化生态平台】虚拟化平台搭建
2023年航空航天、机械与机电工程国际会议(CAMME 2023)
Vant3—— 点击对应的name名称跳转到下一页对应的tab栏的name的位置
C# wpf使用ffmpeg命令行实现录屏
【超详细教程】LVS+KeepAlived高可用部署实战应用
【面经】被虐了之后,我翻烂了equals源码,总结如下
卡尔曼滤波器KF
.NET Static Code Weaving - Rougamo Release 1.1.0
vxe-table 从页面批量删除数据 (不动数据库里的数据)
LYVE1抗体丨Relia Tech LYVE1抗体解决方案
如何通过单步调试的方式找到引起 Fiori Launchpad 路由错误的原因试读版
typescript50-交叉类型和接口之间的类型说明
第1章:初识数据库与MySQL----MySQL安装
观察者模式
C# WPF设备监控软件(经典)-下篇
DataBinding下的RecycleView适配器Adapter基类
互斥锁、读写锁、自旋锁,以及原子操作指令xaddl、cmpxchg的使用场景剖析
Eight things to pay attention to in spot silver