Given an m x n matrix, return all elements of the matrix in spiral order.
Example 1:
Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
Output: [1,2,3,6,9,8,7,4,5]
Example 2:
Input: matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Output: [1,2,3,4,8,12,11,10,9,5,6,7]
Constraints:
- m == matrix.length
- n == matrix[i].length
- 1 <= m, n <= 10
- -100 <= matrix[i][j] <= 100
不知道有没有其他更好的方法, 反正我只想到了用状态机来实现,记录行 index,列 index 和方向, 根据这三个变量的状态来判断下一步的方向,重点在于连续两次换向就代表了我们已经遍历完整个矩阵了,确定了这点能省很多事。
代码实现(Rust):