劍指offer面試題29:順時針列印矩陣

Everglow—發表於2020-10-14

在這裡插入圖片描述

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        if(matrix.empty() || matrix[0].size() == 0) return vector<int>();
        vector<int> res;
        int rows=matrix.size();
        int cols=matrix[0].size();
        int left=0;
        int top=0;
        int bottom=rows-1;
        int right=cols-1;
        while(1) {
            for(int i=left;i<=right;i++) res.push_back(matrix[top][i]);
            if(++top>bottom) break;
            for(int i=top;i<=bottom;i++) res.push_back(matrix[i][right]);
            if(--right<left) break;
            for(int i=right;i>=left;i--) res.push_back(matrix[bottom][i]);
            if(--bottom<top) break;
            for(int i=bottom;i>=top;i--) res.push_back(matrix[i][left]);
            if(++left>right) break;
        }
        return res;
    }
};

相關文章