public class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> list = new ArrayList<>();
//上下左右边界
int down = matrix.length;
if(down==0)return list;
int right = matrix[0].length;
int x=0;
int y=0;
int top=0;
int left=0;
while(down>top&&left<right){
for(;x<right;x++){
list.add(matrix[y][x]);
}
top++;
x--;
y++;
//每次结束后看是否符合条件
if(!(down>top&&left<right)){
return list;
}
for(;y<down;y++){
list.add(matrix[y][x]);
}
right--;
y--;
x--;
if(!(down>top&&left<right)){
return list;
}
for(;x>=left;x--){
list.add(matrix[y][x]);
}
x++;
y--;
down--;
if(!(down>top&&left<right)){
return list;
}
for(;y>=top;y--){
list.add(matrix[y][x]);
}
y++;
x++;
left++;
}
return list;
}
}
54. Spiral Matrix
最新推荐文章于 2022-07-06 10:23:15 发布