54. Spiral Matrix

LeetCode

59. Spiral Matrix II

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
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> res=new ArrayList<>();
if(matrix.length==0) return res;

int matrixSize=matrix.length*matrix[0].length;
int left=-1,right=matrix[0].length-1;
int top=0,down=matrix.length-1;

while(left<=right){
for(int i=++left;i<=right;i++){
if(res.size()==matrixSize) return res;
res.add(matrix[top][i]);
}
for(int i=++top;i<=down;i++){
if(res.size()==matrixSize) return res;
res.add(matrix[i][right]);
}
for(int i=--right;i>=left;i--){
if(res.size()==matrixSize) return res;
res.add(matrix[down][i]);
}
for(int i=--down;i>=top;i--){
if(res.size()==matrixSize) return res;
res.add(matrix[i][left]);
}
}

return res;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public List < Integer > spiralOrder(int[][] matrix) {
List ans = new ArrayList();
if (matrix.length == 0)
return ans;
int top = 0, down = matrix.length - 1;
int left = 0, right = matrix[0].length - 1;
while (top <= down && left <= right) {
for (int i = left; i <= right; i++) ans.add(matrix[top][i]);
for (int i = top + 1; i <= down; i++) ans.add(matrix[i][right]);
if (top < down && left < right) {
for (int i = right - 1; i > left; i--) ans.add(matrix[down][i]);
for (int i = down; i > top; i--) ans.add(matrix[i][left]);
}
top++;
down--;
left++;
right--;
}
return ans;
}
}
0%