给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

示例 1:

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:
输入:n = 1
输出:[[1]]

提示:

1 <= n <= 20

这个题目是一道典型的模拟题目,不涉及什么算法,考察的就是对代码的使用灵活度;

其实一看就应该想到添加数其实就是分为几个循环来做,
填充上行从左到右
填充右列从上到下
填充下行从右到左
填充左列从下到上
难点也就是在这里,该如何规定循环长度?

这里面一定要注意的是循环区间规定的统一性,不能这个是左闭右开,那个就成了左开右闭,这样会出现很多问题,
这里我们遵循左闭右开的原则,那么就拿示例一来说,遍历顺序就是:
1 到 2
3 到 4
5 到 6
7 到 8
这就完成了一圈的循环,

这就是这道题你所规定的标准,这样做才不会乱

代码有详细注释,可以结合来看
代码如下:

class Solution {public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> ans(n, vector<int>(n, 0));//每一圈循环的起始位置int startRow = 0, startCol = 0;//矩阵中间位置,如果n为奇数,则最后中间位置循环走不到,需要单独添加int mid = n / 2;//给矩阵每个空格赋值int count = 1;//循环圈数int loops = n / 2;//用来控制每一圈的每一条边的循环的长度int offest = 1;while (loops--) {int i = startRow, j = startCol;//先从左到右循环,左闭右开for (j = startCol; j < startCol + n - offest; ++j) {ans[startRow][j] = count++;}//从上到下循环,上闭下开for (i = startRow; i < startRow + n - offest; ++i) {ans[i][j] = count++;}//从右到左循环,右闭左开for (; j > startCol; --j) {ans[i][j] = count++;}//从下向上循环,下闭上开for (; i > startRow; --i) {ans[i][j] = count++;}//下一圈循环开始时起始位置各加一startRow++;startCol++;//因为起始位置加一,且下一圈循环长度会减少一,//所以得先减去起始加的一再减减少的一,所以要加二offest += 2;}//n为奇数需要给中间位置单独赋值,及最后一个值if (n % 2) ans[mid][mid] = count;return ans;}
};

59. 螺旋矩阵 II(模拟)相关推荐

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

    第一章数组 (今日任务) 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结 建议大家先独立做题,然后看视频讲解,然后看文章讲解,然后在重新做一遍题,把题目AC,最后整理 ...

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

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

  3. 【代码随想录训练营】【Day02】第一章|数组|977.有序数组的平方|209.长度最小的子数组|59.螺旋矩阵II|总结

    977. 有序数组的平方 题目详细:LeetCode.977 解这道题的思路和方法有很多,最简单的方法就是计算出数组中每个元素的平方数,并记录在新数组中,最后对新数组进行排序即可得到答案,但这个方法效 ...

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

    977. 有序数组的平方 题目链接 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序. 暴力解法: class Solution {pu ...

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

    --------------------------- 977.有序数组的平方 #include <iostream> #include <algorithm> #includ ...

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

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

  7. 977. 有序数组的平方|209. 长度最小的子数组|59. 螺旋矩阵 II

    977. 有序数组的平方 原理 准备:双指针.一个空数组.双指针指向的两个元素作比较,更大的数平方之后,放入空数组的尾部空位. 图解 其实这题的指针有两种方法: 从两边向中间靠拢,得到的是由大到小的值 ...

  8. 随想录一期 day2 [977.有序数组的平方|209. 长度最小的子数组|59.螺旋矩阵II(剥洋葱)]

    977.有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序. 思路 递增数组,平方后最大值一定在最左侧或者最右侧,可想到– ...

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

    目录: 977.有序数组的平方 209.长度最小的子数组 1.暴力输出法 2.滑动窗口法 59.螺旋矩阵II 总结: 今日收获: 977.有序数组的平方 因为是递增且有负数的数组,那么他们的平方如果还 ...

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

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

最新文章

  1. Java Reflection(十):数组
  2. 她92年的,27岁,当上浙大博导。
  3. Docker安装(Centos6.5下安装和Windows下安装)
  4. java基础之多态的详细解释_JAVA基础之多态
  5. 为什么做了梦第二天想不起来_转告父母!为什么有人睡觉爱把脚伸到被子外面?其实与身体状况有关…切勿忽视...
  6. java解压zip包_Java中文件的压缩与解压,每天进步一点点系列
  7. 将Web项目War包部署到Tomcat服务器基本步骤
  8. python pip常用指令(install,list,freeze,show,help)建议保存
  9. android 系统app切换,安卓应用转换器(安装应用转为系统应用)app
  10. 摩尔定律终结——后摩尔时代,何去何从?
  11. ios 开发控件中心点_IOS开发UI篇—手写控件,frame,center和bounds属性
  12. Android Framework 音频子系统(01)音频基础知识
  13. OTL、OCL、BTL电路的区别及其判断方法
  14. 基于动态手势识别的酷狗音乐播放器控制
  15. 汇编语言中xor指令_汇编各类指令用法及含义分析 - 全文
  16. UE4中三维几何总结——几何体
  17. studing(来自转载)
  18. Java实验——设计一个数组模型,用于存储体育项目成绩男生体育项目有足球、长跑和铅球,女生体育项目有跳舞、体操、游泳。设计排序算法,将变量a、b、c中的数值按大小顺利进行互换(从大到小排列)。
  19. mysql数据迁移与同步常用解决方案总结
  20. 设计师想法_设计师阻止了想法一旦出现时该怎么办

热门文章

  1. 什么是元宇宙?为何要关注它?
  2. 必须掌握的空调制冷系统维修要点
  3. DayDayUp:三观一致必将取代血缘关系,成为新的人际纽带(博主推荐文章)
  4. Dataset之BDD100K:BDD100K数据集的简介、下载、使用方法之详细攻略
  5. EL之GB(GBR):利用GBR对回归问题(实数值评分预测)建模
  6. Computer:MediaPreview的简介、安装、使用方法之详细攻略
  7. Python之PIL库的运用、GIF处理
  8. vue2移动端使用vee-validate进行表单验证
  9. 使用Mapping实现的以太坊智能合约的代码
  10. opencv图像处理