纯粹的暴力法,,,真的是看思路,,看边界 ,,针对的一列的要 提早结束,所以有 && nums<m*n
public ArrayList<Integer> printMatrix(int [][] matrix) {
if(matrix.length==0){
return null;
}
ArrayList<Integer> res=new ArrayList<Integer>();
int m=matrix.length;
int n=matrix[0].length;
int x=0;
int y=0;
int tmp=0;//记录第tmp圈,这回影响上下左右的边界
int nums=0;//统计数字,影响结束条件
while(nums<m*n){
while(y<n-tmp && nums<m*n){
res.add(matrix[x][y]);
y++;
nums++;
}
y-=1;
x+=1;
while(x<m-tmp && nums<m*n){
res.add(matrix[x][y]);
x++;
nums++;
}
x-=1;
y-=1;
while(y>=0+tmp && nums<m*n){
res.add(matrix[x][y]);
y--;
nums++;
}
y+=1;
x-=1;
while(x>tmp && nums<m*n){
res.add(matrix[x][y]);
x--;
nums++;
}
x+=1;
y+=1;
tmp+=1;
}
return res;
}
京公网安备 11010502036488号