给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例 1:
1 | 输入: |
示例 2:
1 | 输入: |
问题分析
思路:按照顺时针顺序,依次遍历当前范围的上边界、右边界、下边界及左边界。
当遍历行(或者列)时,把最后一个元素放到接下来的列(或者行)中遍历,就像下面这样。
可能存在的问题:如果最后仅剩下一行(或者一列),那么该行(或者列)的最后一个元素将无法被访问到。
解决办法:每当遍历完当前范围的上边界(或者右边界)时,及时判断是否仅剩下一行(或者一列)。
算法实现
1 | class Solution { |
复杂度分析:时间复杂度和空间复杂度均为O(m×n)。