2023年2月6日 星期一

54. Spiral Matrix

解題思路

模擬好難......

程式碼

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        vector<int> ans;
        int up = 0, down = matrix.size() - 1, left = 0, right = matrix[0].size() - 1;

        while(true)
        {
            for(int i=left; i<=right; i++) ans.push_back(matrix[up][i]);
            up++; if(up > down || left > right) break;
            for(int i=up; i<=down; i++) ans.push_back(matrix[i][right]);
            right--; if(up > down || left > right) break;
            for(int i=right; i>=left; i--) ans.push_back(matrix[down][i]);
            down--; if(up > down || left > right) break;
            for(int i=down; i>=up; i--) ans.push_back(matrix[i][left]);
            left++; if(up > down || left > right) break;
        }
        return ans;
    }
};

沒有留言:

張貼留言