public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> res = new ArrayList<Integer>();
if (matrix== null || matrix.length==0 || matrix[0].length==0) return res;
int width = matrix[0].length;
int height = matrix.length;
for (int i=0; i<(Math.min(width, height) + 1)/2; i++) {
for (int j=i; j<width-i; j++) {
res.add(matrix[i][j]);
}
for (int j=i+1; j<height-i; j++) {
res.add(matrix[j][width-i-1]);
}
if (height - i - 1 == i) break;
for (int j=width-i-2; j>=i; j--) {
res.add(matrix[height-i-1][j]);
}
if (width - i - 1 == i) break;
for (int j = height-i-2; j>=i+1; j--) {
res.add(matrix[j][i]);
}
}
return res;
}
No comments:
Post a Comment