1.顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        int start=0;//决定打几圈   
        vector<int> result;
        if(matrix.size()==0||matrix[0].size()==0) return result;
        int row=matrix.size();//行
        int col=matrix[0].size();//列
        while(row>start*2&&col>start*2)
        {
        int endX=col-1-start;//横坐标,x轴,横向
        int endY=row-1-start;//纵坐标,y轴,纵向
        for(int i=start;i<=endX;i++)
        {
            result.push_back(matrix[start][i]);//第一行从左往右
        }
        if(endY>start)
        {
            for(int i=start+1;i<=endY;i++)
            {
                result.push_back(matrix[i][endX]);//最后一列从上往下
            }
        }
        if(endX>start&&endY>start)
        {
            for(int i=endX-1;i>=start;i--)
            {
                result.push_back(matrix[endY][i]);//最后一行从左往右
            }
        }
        if(endX>start&&endY>start+1)
        {
            for(int i=endY-1;i>=start+1;i--)
            {
                result.push_back(matrix[i][start]);//最后一列从下往上
            }
        }
            start++;//决定打印几圈
        }
        return result;
    }
};