
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
For example,
Given the following matrix:
1 2 3 4 5
|
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]
|
You should return [1,2,3,6,9,8,7,4,5].
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
public class { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> res = new ArrayList<Integer>(); if(matrix == null || matrix.length==0) return res; int left = 0, right = matrix[0].length-1, top = 0, bottom = matrix.length-1; while(left <= right && top <= bottom) { for(int i=left; i<=right; i++) { res.add(matrix[top][i]); } top++; for(int i=top; i<=bottom;i++) { res.add(matrix[i][right]); } right--; if(top<=bottom) { for(int i=right; i>=left; i--) { res.add(matrix[bottom][i]); } } bottom--; if(left<=right) { for(int i=bottom;i>=top;i--) { res.add(matrix[i][left]); } } left++; } return res; } }
|
近期评论