螺旋矩阵
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例 1:
输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]
1 class Solution { 2 public: 3 vector spiralOrder(vector>& matrix) { 4 // 存储结果 5 vector result; 6 // 边界条件 7 if (matrix.empty()) 8 return result; 9 // 二维矩阵行列10 int rows = matrix.size();11 int cols = matrix[0].size();12 // 圈的四个角标13 int left = 0;14 int right = cols - 1;15 int top = 0;16 int btm = rows - 1;17 // 循环打印圈18 while (left <= right && top <= btm){ // 循环条件:19 // 圈的第一步20 for (int i = left; i <= right; ++i) // 第一步循环条件21 result.push_back(matrix[top][i]); // 第一步坐标22 // 圈的第二步23 if (top = left; --i) // 第三步循环条件29 result.push_back(matrix[btm][i]); // 第三步坐标30 // 圈的第四步31 if (top + 1 = top + 1; --i) // 第四步循环条件33 result.push_back(matrix[i][left]); // 第四步坐标34 35 ++left; --right; ++top; --btm;36 }37 return result;38 }39 };