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; } };