给你一个正整数 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. cocos creator 获取当前时间_前端开发者入门 Creator 必读吧
  2. Linux 命令 查看监听端口
  3. linux内核printk调试手段,[Mini2440] 内核调试手段之 printk
  4. 尚洋优选健康美电商平台启动仪式在广州召开
  5. ASP.NET下QueryString不同字符编码间强制转换的解决方案
  6. sql服务器默认密码_搭建一个DNS服务器,轻松实现域名解析内容分发,访问速度提高N倍...
  7. studentdeng的博客
  8. 48个国际音标发音图解暨口形及发音方法
  9. 任正非认为自己的成功没有秘诀
  10. 【QCustomPlot】1.2 - QCustomPlot绘制静态曲线、常用函数的功能说明
  11. python_文件处理模式
  12. 计算机技术基础的心得体会,计算机技术基础学习心得体会5篇范文.docx
  13. 公务员计算机基本操作知识培训,计算机基础知识:计算机中窗口的基本操作
  14. 人民币符号¥单横线?双横线?
  15. android 软件 打开方式有哪些,apk是什么文件 apk文件打开方法详解
  16. html5黑色主题登录网页,永恒经典 18个黑白灰配色的网页设计作品
  17. nmos和pmos区别、工作原理及基本结构详解
  18. html5学习笔记之十(微数据)
  19. 测试工程师需要准备哪些知识
  20. Math 的 ceil、floor、round方法详解及示例

热门文章

  1. 迷你世界支持服务器,迷你世界云服务器
  2. 正在CPU上运行的进程_进程的概念,系统资源分配的单元
  3. 数据中心怎么建更科学
  4. 关于精密空调,你需要了解的都在这里!
  5. 虚拟服务器启动顺序,认识VPC2007的虚拟机系统启动顺序
  6. node.js require 自动执行脚本 并生成html,利用node.js实现自动生成前端项目组件的方法详解...
  7. 成功解决 This graphics driver could not find compatible graphics hardware. You maycontinue installation,
  8. Paper:《Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields ∗》翻译并解读
  9. DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别—预测过程
  10. 成功解决Redirection is not supported