class Solution { public: vector<int> printMatrix(vector<vector<int> > matrix) { vector<int> result; int row=matrix.size(); if(row==0){ return result; } int col=matrix[0].size(); if(col==0){ return result; } int start=0; while(start*2<row && col>start*2){ printCycle(matrix,result,row,col,start); start++; } return result; } void printCycle(const vector<vector<int> > & ori, vector<int> & result,int row,int col, int start){ int endrow=row-start-1; int endcol=col-start-1; for (int i=start;i<=endcol;i++){//从左向右打印一行 result.push_back(ori[start][i]); } if(endrow>start){ for (int i=start+1;i<=endrow;i++){//从上到下打印一列 result.push_back(ori[i][endcol]); } } if(endcol>start && endrow>start){ for (int i=endcol-1;i>=start;i--){//从右向左打印一行 result.push_back(ori[endrow][i]); } } if(endcol>start && endrow>start+1){ for (int i=endrow-1;i>start;i--){//从右向左打印一行 result.push_back(ori[i][start]); } } } };
原文:https://www.cnblogs.com/fancy-li/p/11624049.html