
思路:上下左右四個邊界
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;
}
}