class Solution {
public List spiralOrder(int[][] matrix) {
if (matrix == null || matrix.length == 0) return new ArrayList<>();
int m=matrix.length;
int n=matrix[0].length;
int totalelements=m*n;
List list = new ArrayList<>();
for(int layer=0;layer <totalelements;layer++){
int row=layer;
int col=matrix[0].length-1-layer;
for(int j=layer; list.size()<totalelements && j<n-layer ;j++){
list.add(matrix[row][j]);
}
for(int i=layer+1; list.size()<totalelements && i<m-layer ;i++){
list.add(matrix[i][col]);
}
row=matrix.length-1-layer;
for(int j=n-2-layer; list.size()<totalelements &&j>=layer ;j--){
list.add(matrix[row][j]);
}
col=layer;
for(int i=m-2-layer; list.size()<totalelements && i>=layer+1 ;i--){
list.add(matrix[i][col]);
}
}
return list;
}
}
Top comments (0)