难度简单509收藏分享切换为英文接收动态反馈
(资料图)
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 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]
限制:
0 <= matrix.length <= 100
0 <= matrix[i].length <= 100
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if(matrix.size()==0||matrix[0].size()==0){
return {};
}
vector<int> s;
int col=matrix[0].size();
int row=matrix.size();
int right,left,top,bottom;
right=col-1,left=0;
top=0,bottom=row-1;
int cnt=0;
while(right>=left&&top<=bottom){
for(int i=left;i<=right;i++){
s.push_back(matrix[top][i]);
cnt++;
if(cnt==col*row){
return s;
}
}
for(int i=top+1;i<=bottom;i++){
s.push_back(matrix[i][right]);
cnt++;
if(cnt==col*row){
return s;
}
}
for(int i=right-1;i>=left;i--){
s.push_back(matrix[bottom][i]);
cnt++;
if(cnt==col*row){
return s;
}
}
for(int i=bottom-1;i>top;i--){
s.push_back(matrix[i][left]);
cnt++;
if(cnt==col*row){
return s;
}
}
left++,right--;
top++,bottom--;
}
return s;
}
};
注意细节:不要把横或列搞错,不要把循环写错