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;}}