当前位置:网站首页>螺旋矩阵_数组 | 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]
待更……
边栏推荐
- 【超详细教程】LVS+KeepAlived高可用部署实战应用
- The 600MHz band is here, will it be the new golden band?
- pcl点云数据 转化为 Eigen::Map
- typescript53-泛型约束
- 哎,又跟HR在小群吵了一架!
- 快速入门EasyX图形编程
- C # WPF equipment monitoring software (classic) - the next
- LYVE1抗体丨Relia Tech LYVE1抗体解决方案
- 七夕佳节即将来到,VR全景云游为你神助攻
- 互斥锁、读写锁、自旋锁,以及原子操作指令xaddl、cmpxchg的使用场景剖析
猜你喜欢

The 600MHz band is here, will it be the new golden band?

LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之三:两次优化

How to find the cause of Fiori Launchpad routing errors by single-step debugging

typescript56-泛型接口

网络带宽监控,带宽监控工具哪个好

dynamic memory two

Jmeter cross-platform operation CSV files

特征值与特征向量

微服务的简单介绍

【链路聚合原理及配置】
随机推荐
pcl点云数据 转化为 Eigen::Map
What warehouse management problems can WMS warehouse management system solve in the electronics industry?
Modulo operation (MOD)
Web3 security risks daunting?How should we respond?
Getting started with MATLAB 3D drawing command plot3
Mvc、Mvp和Mvvm
新一代服务网关Gateway的实践笔记
哎,又跟HR在小群吵了一架!
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之三:两次优化
ThreadLocal
建木DevOps流程的快速运用
OpenCV如何实现Sobel边缘检测
【虚拟户生态平台】虚拟化平台安装时遇到的坑
静态文件快速建站
Shell编程之循环语句(for、while)
跨域问题解决方式 代理服务器
2022年上半年各大厂Android面试题整理及答案解析(持续更新中......)
研究生新生培训第四周:MobileNetV1, V2, V3
越来越火的图数据库到底能做什么?
fsdbDump用法





