天天看點

LeetCode_59. 螺旋矩陣 II

題目描述:

給定一個正整數 n,生成一個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。

示例:

輸入: 3
輸出:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]      
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;
    }
};