import java.util.ArrayList; public class Solution { //[1,2,3] //[4,5,6] //[7,8,9] public ArrayList<Integer> spiralOrder(int[][] matrix) { ArrayList<Integer> res = new ArrayList<>() ; if(matrix == null|| matrix.length == 0 || matrix[0].length == 0) return res ; int i = 0 ; int j = 0 ; int up = 0 ; int down = matrix.length - 1 ; int left = 0 ; int right = matrix[0].length - 1 ; while(i >= up && i <= down && j >= left && j <= right) { //向右 while(i >= up && i <= down && j >= left && j <= right) { res.add(matrix[i][j]) ; j ++ ; } j -- ; i ++ ; up ++ ; //向下 while(i >= up && i <= down && j >= left && j <= right) { res.add(matrix[i][j]) ; i ++ ; } i -- ; j -- ; right -- ; //向左 while(i >= up && i <= down && j >= left && j <= right) { res.add(matrix[i][j]) ; j -- ; } j ++ ; i -- ; down -- ; //向上 while(i >= up && i <= down && j >= left && j <= right) { res.add(matrix[i][j]) ; i -- ; } i ++ ; j ++ ; left ++ ; } return res ; } }