给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

    示例 1:
    image.png

    输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
    输出:[1,2,3,6,9,8,7,4,5]
    示例 2:
    image.png

    输入: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]

    提示:

    m == matrix.length
    n == matrix[i].length
    1 <= m, n <= 10
    -100 <= matrix[i][j] <= 100


    1. class Solution {
    2. public List<Integer> spiralOrder(int[][] matrix) {
    3. int n = matrix.length, m = matrix[0].length;
    4. //t:表示螺旋上层 s:表示螺旋下层 l:表示螺旋左列 r:表示螺旋右列
    5. int t = 0, s = n-1, l = 0, r = m-1;
    6. List<Integer> res = new ArrayList();
    7. while(true){
    8. for(int i = l; i <= r; ++i) res.add(matrix[t][i]);
    9. if(++t > s) break;;
    10. for(int i = t; i <= s; ++i) res.add(matrix[i][r]);
    11. if(--r < l) break;
    12. for(int i = r; i >= l; --i) res.add(matrix[s][i]);
    13. if(--s < t) break;
    14. for(int i = s; i >= t; --i) res.add(matrix[i][l]);
    15. if(++l > r) break;
    16. }
    17. return res;
    18. }
    19. }