螺旋矩阵

  该题目我的想法是使用分层去做,但是何题解不同的是我没有设置边界,而是使用圈数来动态决定圈数,我的代码就是空间消耗会很大,有很多不必要的定义。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public List<Integer> spiralOrder(int[][] matrix) {
int iter = 0;
ArrayList<Integer>arr = new ArrayList<Integer>();
if(matrix.length==0){
return arr;
}else{
double round1 = Math.ceil(matrix.length/2.0);
double round2 = Math.ceil(matrix[0].length/2.0);
if(round1>round2){
iter = (int)round2;
}else{
iter = (int)round1;
}
int i = 0;
while(i<iter){
int j,n;
for(j=i;j<matrix[0].length-i;j++){
arr.add(matrix[i][j]);
}
if(j!=i){
j--;
}
for(n=i+1;n<matrix.length-i;n++){
arr.add(matrix[n][j]);
}
if(n!=i+1){
n=n-1;
if(j>i){
for(j=j-1;j>=i;j--){
arr.add(matrix[n][j]);
}
j++;

for(n=n-1;n>i;n--){
arr.add(matrix[n][j]);
}
}
}
i++;
}
return arr;

}

}