leetcode [59] 螺旋矩阵 II / Spiral Matrix II,面试常考题 模拟螺旋过程
题目地址
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,面试常考题 模拟螺旋过程相关推荐
- LeetCode 59. Spiral Matrix II
59. Spiral Matrix II Given an integer n, generate a square matrix filled with elements from 1 to n2 ...
- 59. Spiral Matrix II
/** 59. Spiral Matrix II * 12.5 by Mingyang* 注意,这里我们说的Matrix就是正方形,不再是长方形了,所以我们会用* 更简单的方法,就是直接上下左右分别加 ...
- LeetCode 59 Spiral Matrix II(螺旋矩阵II)(Array)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/5214 ...
- LeetCode Spiral Matrix II (生成螺旋矩阵)
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. F ...
- C#LeetCode刷题之#59-螺旋矩阵 II(Spiral Matrix II)
目录 问题 示例 分析 问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3678 访问. 给定一个正整数 n,生成一 ...
- C#LeetCode刷题之#54-螺旋矩阵(Spiral Matrix)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3672 访问. 给定一个包含 m x n 个元素的矩阵(m 行, ...
- java数组螺旋矩阵从上到下_Java-基础编程(螺旋矩阵乘法表)
package cn.rick.study; import java.io.BufferedReader; import java.io.InputStreamReader; import java. ...
- LeetCode 58 Spiral Matrix II
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...
- 59. Spiral Matrix II ***
description: 螺旋型填充矩阵 Note: Example: Example:Input: 3 Output: [[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ] ] ...
- LeetCode59 Spiral Matrix II
题目: Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. ...
最新文章
- python基础知识点大全-【python基础学习】基础重点难点知识汇总
- python设置图片透明度_学习python第40天
- 【旅行】——出发!露营去。
- 程序员面试中遇到问题
- vba编程把纯文本转换成html,如何将一列文本与html标签转换为Excel中的vba格式文本...
- python密码登录程序三次_Python实现账号密码输错三次即锁定功能简单示例
- tt公路车Java配置怎么样_普通公路车换TT车把可以吗,别的东西还有需要换的吗?...
- 黄聪:移动应用抓包调试利器Charles
- ORACLE 导入的问题
- Android 最新原生定位折腾总结科普
- 极限学习机和支持向量机_极限学习机的发展
- 【Java练习题】Java 程序的输出 | 第十一套(含解析)
- 记录一下落地网关soul(shenyu)过程中的一些实践
- MyEclipse连接oracle数据库及代码
- win10显示器亮度无法调节
- 陈小龙linux及服务器正文 配置rewrite
- Codevs2491玉蟾宫
- Mac m1 python软件环境安装配置
- python9_Python9-列表-day4
- 采购申请设置成抬头审批