public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> res = new ArrayList<>();
int m = matrix.length;
int n = matrix[0].length;
int top=0,down=m-1;
int left=0,right=n-1;
while(top<=down && left<=right){
for(int j=left;j<=right;j++){
res.add(matrix[top][j]);
}
top++;
for(int i=top;i<=down;i++){
res.add(matrix[i][right]);
}
right--;
if(top<=down){ // 经过前面的 top++ 后,top 有可能大于 down,此时是没有意义的
for(int j=right;j>=left;j--){
res.add(matrix[down][j]);
}
down--;
}
if(left<=right){ // 经过前面的 right-- 后,right 有可能小于 left,此时是没有意义的
for(int i=down;i>=top;i--){
res.add(matrix[i][left]);
}
left++;
}
}
return res;
}
www.mianshi.online,www.i9code.cn
本文由博客一文多发平台 OpenWrite 发布!