这道题感觉没什么特殊的技巧,但是坑点比较多。
首先要注意下标越界。
其实注意下标在临界处的增减问题。
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> list = new ArrayList<>();
if(null == matrix){
return list;
}
int row = matrix.length;
int col = matrix[0].length ;
int quan = col/2;
int num = 0;
int i=0;
int j=0;
while(num <= quan){
while(j < col-num && j >=num && i<row-num && i>=num) {
list.add(matrix[i][j]);
j++;
if(j == col-num){
j--;
i++;
break;
}
}
while(j < col-num && j >=num && i<row-num && i>=num) {
list.add(matrix[i][j]);
i++;
if(i == row-num){
i--;
j--;
break;
}
}
while(j < col-num && j >=num && i<row-num && i>=num ) {
list.add(matrix[i][j]);
j--;
if(j < num){
j++;
i--;
break;
}
}
while(j < col-num && j >=num && i<row-num && i >num) {
list.add(matrix[i][j]);
i--;
if(i == num){
i++;
j++;
break;
}
}
num++;
}
return list;
}
}