Leetcode: Spiral Matrix II

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

For example,
Given n = 3,

You should return the following matrix:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

感觉比I稍微简单一些,N*N矩阵。

class Solution {
public:
    vector<vector<int> > generateMatrix(int n) {
        vector<vector<int> > result;
        if (n < 1) {
            return result;
        }
        
        result.resize(n);
        for (int i = 0; i < n; ++i) {
            result[i].resize(n);
        }
        int startx = 0, endx = n - 1;
        int starty = 0, endy = n - 1;
        int num = 1;
        while (num <= n * n) {
            for (int i = startx; i <= endx; ++i) {
                result[starty][i] = num++;
            }
            ++starty;
            for (int i = starty; i <= endy; ++i) {
                result[i][endx] = num++;
            }
            --endx;
            for (int i = endx; i >= startx; --i) {
                result[endy][i] = num++;
            }
            --endy;
            for (int i = endy; i >= starty; --i) {
                result[i][startx] = num++;
            }
            ++startx;
        }
        
        return result;
    }
};

你可能感兴趣的:(LeetCode)