54. 螺旋矩阵 - 力扣(LeetCode) (leetcode-cn.com)
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> list = new LinkedList<>();
if(matrix==null||matrix.length==0||matrix[0].length==0)
return list;
int l=0,r=matrix[0].length-1,u=0,d=matrix.length-1;
while(l<=r&&u<=d){
for(int i=l;i<=r;i++){
list.add(matrix[u][i]);
}
u++;
for(int i=u;i<=d;i++){
list.add(matrix[i][r]);
}
r--;
//一圈可能是走不完的,因此需要在for中增加一个判断,并且只需要后面两个加就行了,前面两个在最外层的while循环中已经做过了判断
for(int i=r;i>=l&&u<=d;i--){
list.add(matrix[d][i]);
}
d--;
for(int i=d;i>=u&&l<=r;i--){
list.add(matrix[i][l]);
}
l++;
}
return list;
}
}