输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof
此题方法就是模拟出矩阵的上下左右位置依次进行打印,先打印最上面的一行,再打印最右边的一列,再打印最下面的一行,再打印最左边的一列
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> res;
if (matrix.empty())
return res;
int l = 0, b = matrix.size() - 1;
int r = matrix[0].size() - 1, t = 0;
int num = (b + 1) * (r + 1), k = 0;
res.resize(num);
while (k < num) {
for (int i = l; i <= r && k < num; ++i) {
res[k] = matrix[t][i];
++k;
}
++t;
for (int i = t; i <= b && k < num; ++i) {
res[k] = matrix[i][r];
++k;
}
--r;
for (int i = r; i >= l && k < num; --i) {
res[k] = matrix[b][i];
++k;
}
--b;
for (int i = b; i >= t && k < num; --i) {
res[k] = matrix[i][l];
++k;
}
++l;
}
return res;
}
};