LeetCode_59. 螺旋矩阵 II

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/all_about_WZY/article/details/100661510

题目描述:

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

示例:

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

思路:本题思路同螺旋矩阵相同,只需要在遍历这个矩阵的过程中不断增加 n u m num 的值(初始化为1)即可

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> res(n,vector<int>(n));//创建二维数组
        int up=0;
        int down=n-1;
        int left=0;
        int right=n-1;
        int num=1;
        while(true){
            for(int i=left;i<=right;i++){
                res[up][i]=num++;
            }
            if(++up>down)
                break;
            for(int i=up;i<=down;i++){
                res[i][right]=num++;
            }
            if(--right<left)
                break;
            for(int i=right;i>=left;i--){
                res[down][i]=num++;
            }
            if(--down<up)
                break;
            for(int i=down;i>=up;--i){
                res[i][left]=num++;
            }
            if(++left>right)
                break;
        }
        return res;
    }
};

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/all_about_WZY/article/details/100661510