LeetCode 59. 螺旋矩阵 II(python、c++)
题目描述
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
题解
(循环) O(n2)
我们顺时针定义四个方向:上右下左。
从左上角开始遍历,先往右走,走到不能走为止,然后更改到下个方向,再走到不能走为止,依次类推,遍历 n^2 个格子后停止。
时间复杂度分析:矩阵中每个格子遍历一次,所以总时间复杂度是 O(n2)。
c++版
class Solution {public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> ans;ans = vector<vector<int>> (n, vector<int> (n));int x = 0, y = 0;int step = 1;while(step <= n*n){while(y < n && !ans[x][y])ans[x][y++] = step++;y-=1;x+=1;while(x < n && !ans[x][y]) ans[x++][y] = step++;x-=1;y-=1;while(y >= 0 &&!ans[x][y]) ans[x][y--] = step++;y += 1;x-=1;while(x >= 0 && !ans[x][y]) ans[x--][y] = step++;x+=1;y+=1;}return ans;}
};
python版
class Solution:def generateMatrix(self, n: int) -> List[List[int]]:ans = [[0 for _ in range(n)] for _ in range(n)]x = 0y = 0step = 1while step <= n*n:while y < n and ans[x][y] == 0:ans[x][y] = step;y += 1step += 1y-=1;x+=1;while x < n and ans[x][y] == 0:ans[x][y] = step;x += 1step += 1x-=1;y-=1;while y >= 0 and ans[x][y] == 0:ans[x][y] = step;y -= 1step += 1y += 1;x-=1;while x >= 0 and ans[x][y] == 0:ans[x][y] = step;x -= 1step += 1x+=1;y+=1;return ans
LeetCode 59. 螺旋矩阵 II(python、c++)相关推荐
- 代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、LeetCode 209.长度最小的子数组、LeetCode 59.螺旋矩阵II
LeetCode 977.有序数组的平方 双指针法:数组其实是有序的, 只不过负数平方之后可能成为最大数了.那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间.此时可以考虑双指针法 ...
- LeetCode 59. 螺旋矩阵 II LeetCode 54. 螺旋矩阵
文章目录 1. 题目信息 2. LeetCode 59 解题 3. LeetCode 54. 螺旋矩阵 4.<剑指Offer>面试题29 1. 题目信息 给定一个正整数 n,生成一个包含 ...
- LeetCode 59. 螺旋矩阵 II
和54.螺旋矩阵 类似 public static int[][] generateMatrix(int n) {int[][] a = new int[n][n];if(n<1)return ...
- Leetcode 59. 螺旋矩阵 II (每日一题 20210926)
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix .示例 1:输入:n = 3 输出:[[1,2,3],[8,9,4],[ ...
- leetcode 59. 螺旋矩阵 II(递归)
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix . 示例 1: 输入:n = 3 输出:[[1,2,3],[8,9,4] ...
- leetcode —— 59. 螺旋矩阵 II
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, ...
- LeetCode 59. 螺旋矩阵 II [水题+简单模拟]
前言: 最近要准备硕士研究生入学复试,还要机试,所以又开始刷一些题了. 太久没刷题了,本来就菜,现在变得更菜了-- 题面: 吐槽:题目来自LeetCode,难度标识为"中等",有点 ...
- 2022-7-8 Leetcode 59.螺旋矩阵 II
class Solution {public:vector<vector<int>> generateMatrix(int n) {vector<vector<in ...
- 代码随想录算法训练营第二天|leetcode 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
leetcode 977.有序数组的平方 想到昨天写的双指针,十分刻意用了一下,感觉还是比较生疏,还得加强练习和思考,然后发现还需要排序,想到了vector的排序sort(),但是觉得直接用不好,也忘 ...
最新文章
- 评审过程中,A小组发现了5个缺陷,B小组发现了9个缺陷,他们发现的缺陷中有3个是相同的。请问:还有多少个潜在的缺陷没有发现?
- kudu大量数据更新_Apache Kudu又更新?1.4版改进了Web界面
- 几分钟内学习 Clojure
- DS1302时钟芯片在STM32F0中的完整应用代码
- Golang 为什么不能直接将任意类型数组赋值给 []interface{}完成泛型操作
- 单节点配置SecondaryNameNode
- java5的递归算法_java递归算法 java面试题(5)
- 力扣113. 路径总和 II(JavaScript)
- cas 怎么过滤带pathvariable_过滤材料怎么摆?记住这个“公式”就好~
- Hangfire在ASP.NET CORE中的简单实现方法
- iOS录音、播放、WAV以及caf转成MP3上传后台
- 将老电脑从windows xp系统升级到10//将win10 32位系统更为64位
- win10计算机管理被阻止,Win10家庭版安装程序提示系统管理员已阻止你运行此应用的解决办法...
- PPAPI中使用OpenGL ES绘图
- 剪映怎么把英文字幕翻译成中文?(附视频教程+字幕翻译工具)
- xcode清理缓存瘦身方法整理
- springboot聚合工程讲解与部署
- 蓝牙AOA定位:如何通过AOA角度计算坐标
- 西门子的统一通信解决之道
- 清默网络——我的CCIE考试经验与心得(2)