题目:
题解:
public List<Integer> spiralOrder(int[][] matrix) {
if (matrix.length == 0) return new ArrayList();
int m = matrix.length;
int n = matrix[0].length;
ArrayList result = new ArrayList();
int north = 0; //北
int south = m-1; //南
int west = 0; //西
int east = n-1; //东
int count1 = 0;
int count2 = 1;
result.add(matrix[0][0]);
while (result.size()<m*n){
if (north<(m+1)/2){
while (west != east){
result.add(matrix[count1][++west]);
if (result.size()==m*n) return result;
}
east--;
}
if (west>=(n-1)/2){
while (north != south){
result.add(matrix[++north][west]);
if (result.size()==m*n) return result;
}
}
while (west != count1){
result.add(matrix[north][--west]);
if (result.size()==m*n) return result;
}
south--;
count1++;
while (north != count2){
result.add(matrix[--north][west]);
if (result.size()==m*n) return result;
}
count2++;
}
return result;
}
来源:CSDN
作者:yhl_csdn
链接:https://blog.csdn.net/csdn_yaohailong/article/details/103999123