题目描述

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

示例

输入:n = 3

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

解题思路

  • 没有具体的算法,考察的是模拟实现过程
  • 一圈一圈的循环赋值(当n是奇数的时候,会少一圈,但是中间会有一个空值)
  • 坚持循环不变量原则,循环条件:左闭右开(对应的循环条件总是<或者>,没有=)

代码实现

class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
//定义一个二维数组
vector<vector<int>> res(n, vector<int>(n, 0));
int startx = 0;
int starty = 0; int loop = (n / 2); //要循环几圈
int mid = (n / 2); //中间的位置
int offset = 1; //数组下标从0开始,用于控制每次循环一条边的长度
int count = 1; //用于生成1-n的数字 int i,j; //必须全局定义,不然后面有些for里不能使用 //大圈的循环
//n是偶数,循环n/2圈
//n是奇数,循环n/2圈,还留有中间的空
while(loop--){
j = starty;
i = startx;
//第一圈 第一行 左闭右开,第一行最后一个元素不赋值
for(j = starty; j < n - offset; j++){
res[startx][j] = count++; //先是 = count 后是count+1
}
//第一圈 第n列
for( i = startx; i < n - offset; i++){
res[i][j] = count++;
}
//第一圈 第n行
for(; j > starty; j--){
res[i][j] = count++;
}
//第一圈 第一列
for(; i > startx; i--){
res[i][j] = count++;
}
offset += 1;
startx ++;
starty ++;
}
//如果n是奇数,还剩下中间位置
if(n%2){
res[mid][mid] = count;
}
return res;
}
};

lc.59 螺旋矩阵 II的更多相关文章

  1. Java实现 LeetCode 59 螺旋矩阵 II

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

  2. 【LeetCode】59.螺旋矩阵II

    59.螺旋矩阵II 知识点:数组: 题目描述 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix . 示例 输入:n = 3 ...

  3. leetcode 54. 螺旋矩阵 及 59. 螺旋矩阵 II

    54. 螺旋矩阵 问题描述 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, ...

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

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

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

    2022/09/22 第二天 第一题 这题我就直接平方后排序了,很无脑但很快乐啊(官方题解是双指针 第二题 滑动窗口的问题,本来我也是直接暴力求解发现在leetCode上超时,看了官方题解,也是第一次 ...

  6. 59. 螺旋矩阵 II

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

  7. 【LeetCode-面试算法经典-Java实现】【059-Spiral Matrix II(螺旋矩阵II)】

    [059-Spiral Matrix II(螺旋矩阵II)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given an integer n, generate a ...

  8. LintCode-381.螺旋矩阵 II

    螺旋矩阵 II 给你一个数n生成一个包含1-n^2的螺旋形矩阵 样例 n = 3 矩阵为 [     [ 1, 2, 3 ],     [ 8, 9, 4 ],     [ 7, 6, 5 ] ] 标 ...

  9. LeetCode(59):螺旋矩阵 II

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

  10. [LeetCode] 59. Spiral Matrix II 螺旋矩阵 II

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

随机推荐

  1. vscode个人常用插件

    1.个人常用插件记录一下,2020年7月6日

  2. 1.win10安装centos虚拟机并设置允许远程

    一.下载并安装 打开如下连接,下载VMware和CentOS7镜像安装好虚拟机 http://t.zoukankan.com/onlymate-p-9837651.html这个链接的镜像是7.0的,我 ...

  3. VScode打开文件夹位置技巧

    VScode在打开文件夹,弹出对话框的时候,去文件夹(应用)到达该路径,对话框中的路径自动变为当前文件夹(应用)的路径.去文件夹(应用)到达该路径

  4. TODOList小黄条

    TODOList http://www.yynote.cn/ 总结 windows中的神器

  5. 项目启动报错:关于modals以及node版本相关

    programme1: 1.代码用master分支的. 2. 删除node_module ,  yarn lock 文件,package-lock文件. 3. 用 npm install 或者 yar ...

  6. 杭电 oj 第几天?

    Problem Description 给定一个日期,输出这个日期是该年的第几天.   Input 输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input , ...

  7. Unity Random

    Random 不仅可以随机值,还可以随机其它属性,用了这么久,刚知道... 譬如: rotation  随机Rotation onUnitSphere  球体表面随机点 insideUnitCircl ...

  8. [iOS] 对 UItableView 等界面(ClipsToBounds) 同时使用 圆角和阴影

    展示内容的界面会被 ClipsToBounds = YES(按边缘剪切),但同时需要圆角和阴影效果. 一个界面,ClipsToBounds = YES 之后,阴影会被剪切,不再展示. 感觉只能使用多个 ...

  9. Delphi7_VCL线程的使用(一)

    1.TThread类的属性 (1)FreeOnTerminate属性 该属性用于指定当前的线程终止时是否自动删除线程对象.默认值为true. 语法: 1 Property FreeOnTerminat ...

  10. docker-compose实践(携程apollo项目)

    docker-compose使用开源镜像启动容器 以携程apollo项目为例,使用docker-compose部署单节点模式 创建apollo文件夹,vim一个新的docker-compose.yam ...