classSolution{publicList<Integer>spiralOrder(int[][] matrix){if(matrix.length ==0)returnnull;List<Integer> res =newArrayList<>();int left =0, top =0;int bottom = matrix.length -1;int right = matrix[0].length -1;while(left <= right && top <= bottom){for(int i = left; i <= right; i++)res.add(matrix[top][i]);top++;if(left > right || top > bottom)break;for(int i = top; i <= bottom; i++)res.add(matrix[i][right]);right--;if(left > right || top > bottom)break;for(int i = right; i >= left; i--)res.add(matrix[bottom][i]);bottom--;if(left > right || top > bottom)break;for(int i = bottom; i >= top; i--)res.add(matrix[i][left]);left++;if(left > right || top > bottom)break;}return res;}}