Given a matrix of m x n elements (m rows, n columns), return all elements of the Matri X in Spiral Order.
Example
Given the following matrix:
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]
You should return [1,2,3,6,9,8,7,4,5]
.
Public classSolution {/** * @parammatrix A matrix of M x n elements *@returnAn integer list*/ PublicList<integer> Spiralorder (int[] matrix) { //Write Your code hereList<Integer> res =NewArraylist<integer>(); if(Matrix = =NULL|| Matrix.length = = 0 | | Matrix[0] = =NULL|| Matrix[0].length = = 0) returnRes; intm =matrix.length; intn = matrix[0].length; intLayer = 0; while(Layer < M-LAYER-1) && (Layer < n-1-layer)) { for(inti = 0; I < n-layer-1-layer; i++) Res.add (Matrix[layer][layer+i]); for(inti = 0; I < m-layer-1-layer; i++) Res.add (Matrix[layer+ i][n-layer-1]); for(inti = 0; I < n-layer-1-layer; i++) Res.add (matrix[m-Layer-1][n-layer-1-i]); for(inti = 0; I < m-layer-1-layer; i++) Res.add (matrix[m-Layer-1-i] [Layer]); Layer++; } if(M >N) { if(Layer = = n-1-layer) { for(inti = layer; I <= m-layer-1; i++) Res.add (Matrix[i][layer]); } } Else if(M <N) { if(Layer = = m-1-layer) { for(inti = layer; I <= n-layer-1; i++) Res.add (Matrix[layer][i]); } } Else{ if(Layer = = m-1-layer) {Res.add (Matrix[layer][layer]); } } returnRes; } }
Lintcode-medium-spiral Matrix