纯粹的暴力法,,,真的是看思路,,看边界 ,,针对的一列的要 提早结束,所以有 && 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; }