程式語言 - LeetCode - C++ - 59. Spiral Matrix II



題目:


解答:

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        int l = 0;
        int r = n - 1;
        int t = 0;
        int b = n - 1;
        int num = 1;
        vector<vector<int>> ans(n, vector<int>(n, 0));

        while ((l <= r) && (t <= b)) {
            for (int i = l; i <= r; ++i) {
                ans[t][i] = num++;
            }
            t += 1;

            for (int i = t; i <= b; ++i) {
                ans[i][r] = num++;
            }
            r -= 1;

            if (t <= b) {
                for (int i = r; i >= l; --i) {
                    ans[b][i] = num++;
                }
                b -= 1;
            }

            if (l <= r) {
                for (int i = b; i >= t; --i) {
                    ans[i][l] = num++;
                }
                l += 1;
            }
        }

        return ans;
    }
};