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


 


示例 1:



输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]

输出:[1,2,3,6,9,8,7,4,5]

示例 2:



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


来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/spiral-matrix

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


代码:

class Solution {
    public List<Integer> spiralOrder(int[][] nums) {
        if (nums == null || nums.length == 0 || nums[0].length == 0) {
            return new LinkedList<>();
        }
        int l = 0;
        int r = nums[0].length - 1;
        int u = 0;
        int d = nums.length - 1;
        List<Integer> list = new LinkedList<>();
        while (l <= r && u <= d) {
            for (int i = l; i <= r; i++) {
                list.add(nums[u][i]);
            }
            u++;
            for (int i = u; i <= d; i++) {
                list.add(nums[i][r]);
            }
            r--;
            for (int i = r; i >= l && u <= d; i--) {
                list.add(nums[d][i]);
            }
            d--;
            for (int i = d; i >= u && l <= r; i--) {
                list.add(nums[i][l]);
            }
            l++;
        }
        return list;
    }
}