天天看點

Leetcode 54.螺旋矩陣

Leetcode 54.螺旋矩陣

思路:上下左右四個邊界

class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        List<Integer> list = new ArrayList<>();
        if(matrix.length == 0 || matrix[0].length == 0 || matrix == null)   return list;
        int l = 0, r = matrix[0].length - 1, u = 0, d = matrix.length - 1;
        while(true){
        	// 從左到右	l -> r
            for(int i = l;i <= r; i++)  list.add(matrix[u][i]);
            if(++u > d) break;
			// 從上到下 u -> d
            for(int i = u; i <= d; i++) list.add(matrix[i][r]);
            if(--r < l) break;
			// 從右到左	r -> l
            for(int i = r; i>= l; i--)  list.add(matrix[d][i]);
            if(--d < u) break;
			// 從下到上	d -> u
            for(int i = d; i >= u; i--) list.add(matrix[i][l]);
            if(++l > r) break;
        }
        return list;
    }
}