一开始把行列搞反了。
中间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; } }