程式語言 - LeetCode - C++ - 54. Spiral Matrix



題目:


解答:

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        int t = 0;
        int b = matrix.size() - 1;
        int l = 0;
        int r = matrix[0].size() - 1;
        vector<int> ret;

        while (t <= b && l <= r) {
            for (int i = l; i <= r; ++i) {
                ret.push_back(matrix[t][i]);
            }
            t += 1;

            for (int i = t; i <= b; ++i) {
                ret.push_back(matrix[i][r]);
            }
            r -= 1;

            if (t <= b) {
                for (int i = r; i >= l; --i) {
                    ret.push_back(matrix[b][i]);
                }
                b -= 1;
            }

            if (l <= r) {
                for (int i = b; i >= t; --i) {
                    ret.push_back(matrix[i][l]);
                }
                l += 1;
            }
        }

        return ret;
    }
};