题目详情
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 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
注意:本题与主站 54 题相同:https://leetcode-cn.com/problems/spiral-matrix/
——题目难度:简单
下面代码
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> ans;
if(matrix.empty()) return ans;
int up = 0, down = matrix.size() - 1; //上下边界
int left = 0, right = matrix[0].size() - 1; //左右边界
while(1) {
for(int i=left;i<=right;i++) //从左往右
{
ans.push_back(matrix[up][i]);
}
if(++up > down) break;
for(int i=up;i<=down;i++) //从上往下
{
ans.push_back(matrix[i][right]);
}
if(left > --right) break;
for(int i=right;i>=left;i--) //从右往左
{
ans.push_back(matrix[down][i]);
}
if(up > --down) break;
for(int i=down;i>=up;i--) //从下往上
{
ans.push_back(matrix[i][left]);
}
if(++left > right) break;
}
return ans;
}
};
结果