首页 > 编程语言 > 详细

【LeetCode-数组】螺旋矩阵 II

时间:2020-06-19 23:33:06      阅读:75      评论:0      收藏:0      [点我收藏+]

题目描述

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

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

题目链接: https://leetcode-cn.com/problems/spiral-matrix-ii/

思路

设置 4 个边界:l, r, t, b,分别代表左右上下的边界,然后从左到右、从上到下、从右到左、从下到上填充数组,设置一个变量 num 初始化为 1,表示当前要填充的数字,每填充一次 num+1。每填充一行或一列后要对边界进行更新。例如,从左到右填充一行后,此时 t 要更新为 t+1,因为少了一行,其他类似。
技术分享图片
代码如下:

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> v(n, vector<int>(n, 0));
        int l = 0, r = n-1, t = 0, b = n-1;
        int num = 1;
        while(num<=n*n){
            for(int i=l; i<=r; i++) v[t][i] = num++;
            t++;

            for(int i=t; i<=b; i++) v[i][r] = num++;
            r--;
            
            for(int i=r; i>=l; i--) v[b][i] = num++;
            b--;
            
            for(int i=b; i>=t; i--) v[i][l] = num++;
            l++;
        }
        return v;
    }
};
  • 时间复杂度:O(n^2)
  • 空间复杂度:O(1)

参考

https://leetcode-cn.com/problems/spiral-matrix-ii/solution/spiral-matrix-ii-mo-ni-fa-she-ding-bian-jie-qing-x/

【LeetCode-数组】螺旋矩阵 II

原文:https://www.cnblogs.com/flix/p/13166885.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!