题目

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        if(matrix.size()==0||matrix[0].size()==0) return{};
        int rows = matrix.size(),columns = matrix[0].size();
        vector<int> order;
        int left = 0,right = columns-1,top = 0,bottom = rows - 1;
        while(left<=right&&top<=bottom)
        {
            for(int column = left;column<=right;column++)
            {
                order.push_back(matrix[top][column]);
            }
            for(int row = top+1;row<=bottom;row++)
            {
                order.push_back(matrix[row][right]);
            }
            if(left<right&&top<bottom){
                for(int column=right-1;column>left;column--)
                {
                    order.push_back(matrix[bottom][column]);
                }
                for(int row = bottom;row>top;row--)
                {
                    order.push_back(matrix[row][left]);
                }
            }
            left++;
            right--;
            top++;
            bottom--;
        }
        return order;
    }
};
posted on 2020-06-06 00:03  吕店老板  阅读(75)  评论(0编辑  收藏  举报