import java.util.*;
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
if(matrix==null) return null;
int zx=0;
int zy=0;
int yx=matrix.length-1;//gao3
int yy=matrix[0].length-1;//kuan3
ArrayList<Integer> my=new ArrayList<Integer>();
while(zx<=yx&&zy<=yy){
int x=zx;
int y=zy;
while(y<=yy){
my.add(matrix[zx][y]);
y++;}
y--;
// System.out.println(y);
x++;
while(x<=yx){
my.add(matrix[x][yy]);
x++;}
x--;
// System.out.println(x);
y--;
if(yy-zy==0||yx-zx==0){//这里特别重要,这里没判断好多都不对
break;
}
while(y>=zy&&y<yy){
my.add(matrix[yx][y]);
y--;}
x--;
while(x>zx&&x<yx){
my.add(matrix[x][zy]);
x--;}
zx++;zy++;yy--;yx--;
}
return my;
}
}
感觉人快死了才通本题,扣边界真的好难。程序员就是最细心的职业好吗?



京公网安备 11010502036488号