题目描述

给定一个正整数 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++)相关推荐

  1. 代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、​LeetCode 209.长度最小的子数组、LeetCode 59.螺旋矩阵II

    LeetCode 977.有序数组的平方 双指针法:数组其实是有序的, 只不过负数平方之后可能成为最大数了.那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间.此时可以考虑双指针法 ...

  2. LeetCode 59. 螺旋矩阵 II LeetCode 54. 螺旋矩阵

    文章目录 1. 题目信息 2. LeetCode 59 解题 3. LeetCode 54. 螺旋矩阵 4.<剑指Offer>面试题29 1. 题目信息 给定一个正整数 n,生成一个包含 ...

  3. LeetCode 59. 螺旋矩阵 II

    和54.螺旋矩阵 类似 public static int[][] generateMatrix(int n) {int[][] a = new int[n][n];if(n<1)return ...

  4. Leetcode 59. 螺旋矩阵 II (每日一题 20210926)

    给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix .示例 1:输入:n = 3 输出:[[1,2,3],[8,9,4],[ ...

  5. leetcode 59. 螺旋矩阵 II(递归)

    给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix . 示例 1: 输入:n = 3 输出:[[1,2,3],[8,9,4] ...

  6. leetcode —— 59. 螺旋矩阵 II

    给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, ...

  7. LeetCode 59. 螺旋矩阵 II [水题+简单模拟]

    前言: 最近要准备硕士研究生入学复试,还要机试,所以又开始刷一些题了. 太久没刷题了,本来就菜,现在变得更菜了-- 题面: 吐槽:题目来自LeetCode,难度标识为"中等",有点 ...

  8. 2022-7-8 Leetcode 59.螺旋矩阵 II

    class Solution {public:vector<vector<int>> generateMatrix(int n) {vector<vector<in ...

  9. 代码随想录算法训练营第二天|leetcode 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

    leetcode 977.有序数组的平方 想到昨天写的双指针,十分刻意用了一下,感觉还是比较生疏,还得加强练习和思考,然后发现还需要排序,想到了vector的排序sort(),但是觉得直接用不好,也忘 ...

最新文章

  1. 评审过程中,A小组发现了5个缺陷,B小组发现了9个缺陷,他们发现的缺陷中有3个是相同的。请问:还有多少个潜在的缺陷没有发现?
  2. kudu大量数据更新_Apache Kudu又更新?1.4版改进了Web界面
  3. 几分钟内学习 Clojure
  4. DS1302时钟芯片在STM32F0中的完整应用代码
  5. Golang 为什么不能直接将任意类型数组赋值给 []interface{}完成泛型操作
  6. 单节点配置SecondaryNameNode
  7. java5的递归算法_java递归算法 java面试题(5)
  8. 力扣113. 路径总和 II(JavaScript)
  9. cas 怎么过滤带pathvariable_过滤材料怎么摆?记住这个“公式”就好~
  10. Hangfire在ASP.NET CORE中的简单实现方法
  11. iOS录音、播放、WAV以及caf转成MP3上传后台
  12. 将老电脑从windows xp系统升级到10//将win10 32位系统更为64位
  13. win10计算机管理被阻止,Win10家庭版安装程序提示系统管理员已阻止你运行此应用的解决办法...
  14. PPAPI中使用OpenGL ES绘图
  15. 剪映怎么把英文字幕翻译成中文?(附视频教程+字幕翻译工具)
  16. xcode清理缓存瘦身方法整理
  17. springboot聚合工程讲解与部署
  18. 蓝牙AOA定位:如何通过AOA角度计算坐标
  19. 西门子的统一通信解决之道
  20. 清默网络——我的CCIE考试经验与心得(2)

热门文章

  1. 支付弹出窗口被拦截解决办法
  2. Swift 简单的通讯录
  3. [置顶] Oracle数据操作和控制语言详解
  4. 设置UITableView Section的背景颜色和字体颜色
  5. linux编译多个函数,Swift on Linux —— 多文件协同编译
  6. java基础 6 基本类型与运算
  7. LeedCode Q344 Reverse String(Easy)
  8. mysql分组取每组前几条记录(排序)
  9. VirtualBox 网络链接配置
  10. 软件_mongo占用磁盘空间过大