矩陣的旋轉列印
阿新 • • 發佈:2019-01-12
關鍵點,就是行列點開始點start,行列的終止點endx,endy
class Solution { public: vector<int> spiralOrder(vector<vector<int> > &matrix) { int row=matrix.size(); if(row==0){ return res; } int col=matrix[0].size(); int start=0; for(;start*2<col&&start*2<row;start++){ printcircle(matrix,row,col,start); } return res; } void printcircle(vector<vector<int> > &matrix,int row,int col,int start){ int endx=col-1-start; int endy=row-1-start; for(int i=start;i<=endx;i++){ //從左到右 res.push_back(matrix[start][i]); } if(start<endy){ //從上到下 for(int i=start+1;i<=endy;i++){ res.push_back(matrix[i][endx]); //主要這裡的下標 y 動 x就不動 } } if(start<endx && start<endy){ //右到左 並且不能重複 for(int i=endx-1;i>=start;i--){ res.push_back(matrix[endy][i]); } } if(start<(endy-1)&&start<endx){//start < endx 為了使有這麼一列 start<endy-1 是為了有上面有這麼一行 for(int i=endy-1;i>start;i--){ res.push_back(matrix[i][start]); } } } vector<int> res; };