数组的遍历问题
注意边界的判断
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
int m = matrix.length;
int n = matrix[0].length;
int upper_bound = 0, lower_bound = m - 1;
int left_bound = 0, right_bound = n - 1;
int size = m*n;
List<Integer> res = new ArrayList<>();
while(res.size() < size){
if(upper_bound <= lower_bound){
//向右遍历
for(int i = left_bound;i<=right_bound;i++){
res.add(matrix[upper_bound][i]);
}
upper_bound++;
}
if(right_bound>=left_bound){
//向下遍历
for(int i = upper_bound;i<=lower_bound;i++){
res.add(matrix[i][right_bound]);
}
right_bound--;
}
if(upper_bound<=lower_bound){
//向左遍历
for(int i = right_bound;i>=left_bound;i--){
res.add(matrix[lower_bound][i]);
}
lower_bound--;
}
//向上遍历
if(left_bound<=right_bound){
for(int i = lower_bound;i>=upper_bound;i--){
res.add(matrix[i][left_bound]);
}
left_bound++;
}
}
return res;
}
}