一开始把行列搞反了。
中间debug出现问题,就...生打补丁。
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> spiralOrder(int[][] matrix) {
ArrayList<Integer> ans = new ArrayList<>();
int i = 0, j = 0, m = 0, n = 0;
m = matrix.length;
if(m == 0) return ans;
n = matrix[0].length;
int cnt = 0;
int rightBorder = n - 1;
int leftBorder = 0;
int bottomBorder = m - 1;
int topBorder = 0;
while(cnt < m * n){
// right
while(j <= rightBorder){
ans.add(matrix[topBorder][j]);
j++;
cnt++;
}
j--;
i++;
topBorder++;
if(cnt >= m * n) break;
// down
while(i <= bottomBorder){
ans.add(matrix[i][rightBorder]);
i++;
cnt++;
}
i--;
j--;
rightBorder--;
if(cnt >= m * n) break;
// left
while(j >= leftBorder){
ans.add(matrix[bottomBorder][j]);
j--;
cnt++;
}
j++;
i--;
bottomBorder--;
if(cnt >= m * n) break;
// up
while(i >= topBorder){
ans.add(matrix[i][leftBorder]);
i--;
cnt++;
}
i++;
j++;
leftBorder++;
}
return ans;
}
}



京公网安备 11010502036488号