题目地址

https://leetcode-cn.com/problems/spiral-matrix-ii/

思路

模拟顺时针画矩阵的过程

填充上行从左到右
填充右列从上到下
填充下行从右到左
填充左列从下到上

在模拟的过程中最重要的思想是保持画每一条边的原则一致,即每次都是左闭右开的原则,如果所示

很多同学,做这道题目之所以一直写不好,代码越写越乱,就是因为 在画每一条边的时候,没有保证统一原则

例如:模拟矩阵上边的时候 左闭右开,然后模拟矩阵右列的时候又开始了左闭又闭,那岂能不乱

解法

class Solution {
public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> res(n, vector<int>(n, 0)); // 使用vector定义一个二维数组int startx = 0, starty = 0; // 定义每循环一个圈的起始位置int loop = n / 2; // 每个圈循环几次int mid = n / 2; // 矩阵中间的位置,例如:n为3, 中间的位置就是(1,1),n为5,中间位置为(3, 3)int count = 1; // 用来计数int offset = 1; // 每一圈循环,需要偏移的位置int i,j;while (loop --) {i = startx;j = starty;// 下面开始的四个for就是模拟转了一圈// 模拟填充上行从左到右(左闭右开)for (j = starty; j < starty + n - offset; j++) {res[startx][j] = count++;}// 模拟填充右列从上到下(左闭右开)for (i = startx; i < startx + n - offset; i++) {res[i][j] = count++;}// 模拟填充下行从右到左(左闭右开)for (; j > starty; j--) {res[i][j] = count++;}// 模拟填充左列从下到上(左闭右开)for (; i > startx; i--) {res[i][j] = count++;}// 第二圈开始的时候,起始位置要各自加1, 例如:第一圈起始位置是(0, 0),第二圈起始位置是(1, 1)startx++;starty++;// offset 控制每一圈,遍历的长度offset += 2;}// 如果n为奇数的话,需要单独给矩阵最中间的位置赋值if (n % 2) {res[mid][mid] = count;}return res;}
};

更多精彩文章持续更新,可以微信搜索「 代码随想录」第一时间阅读,关注后有大量的学习资料和简历模板可以免费领取,本文 GitHub:https://github.com/youngyangyang04/leetcode-master 已经收录,欢迎star,fork,共同学习,一起进步。

leetcode [59] 螺旋矩阵 II / Spiral Matrix II,面试常考题 模拟螺旋过程相关推荐

  1. LeetCode 59. Spiral Matrix II

    59. Spiral Matrix II Given an integer n, generate a square matrix filled with elements from 1 to n2 ...

  2. 59. Spiral Matrix II

    /** 59. Spiral Matrix II * 12.5 by Mingyang* 注意,这里我们说的Matrix就是正方形,不再是长方形了,所以我们会用* 更简单的方法,就是直接上下左右分别加 ...

  3. LeetCode 59 Spiral Matrix II(螺旋矩阵II)(Array)

    版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/5214 ...

  4. LeetCode Spiral Matrix II (生成螺旋矩阵)

     Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. F ...

  5. C#LeetCode刷题之#59-螺旋矩阵 II(Spiral Matrix II)

    目录 问题 示例 分析 问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3678 访问. 给定一个正整数 n,生成一 ...

  6. C#LeetCode刷题之#54-螺旋矩阵(Spiral Matrix)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3672 访问. 给定一个包含 m x n 个元素的矩阵(m 行, ...

  7. java数组螺旋矩阵从上到下_Java-基础编程(螺旋矩阵乘法表)

    package cn.rick.study; import java.io.BufferedReader; import java.io.InputStreamReader; import java. ...

  8. LeetCode 58 Spiral Matrix II

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...

  9. 59. Spiral Matrix II ***

    description: 螺旋型填充矩阵 Note: Example: Example:Input: 3 Output: [[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ] ] ...

  10. LeetCode59 Spiral Matrix II

    题目: Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. ...

最新文章

  1. python基础知识点大全-【python基础学习】基础重点难点知识汇总
  2. python设置图片透明度_学习python第40天
  3. 【旅行】——出发!露营去。
  4. 程序员面试中遇到问题
  5. vba编程把纯文本转换成html,如何将一列文本与html标签转换为Excel中的vba格式文本...
  6. python密码登录程序三次_Python实现账号密码输错三次即锁定功能简单示例
  7. tt公路车Java配置怎么样_普通公路车换TT车把可以吗,别的东西还有需要换的吗?...
  8. 黄聪:移动应用抓包调试利器Charles
  9. ORACLE 导入的问题
  10. Android 最新原生定位折腾总结科普
  11. 极限学习机和支持向量机_极限学习机的发展
  12. 【Java练习题】Java 程序的输出 | 第十一套(含解析)
  13. 记录一下落地网关soul(shenyu)过程中的一些实践
  14. MyEclipse连接oracle数据库及代码
  15. win10显示器亮度无法调节
  16. 陈小龙linux及服务器正文 配置rewrite
  17. Codevs2491玉蟾宫
  18. Mac m1 python软件环境安装配置
  19. python9_Python9-列表-day4
  20. 采购申请设置成抬头审批

热门文章

  1. javaScript的arguments传参数
  2. C++文件操作初体验
  3. 人与自然灵长类动物-湿地猎手(上)
  4. Enterprise Library 4.1 Security Block 快速使用图文笔记
  5. poj 3630 简单Trie树的应用
  6. opencv-Mat数据类型及位数总结
  7. 迭代器,生成器,三元表达式,列表解析式
  8. 解决API中无法使用session问题
  9. Windows.document对象
  10. 网上第3方软件教程摘选