形象的傻瓜写法
import java.util.ArrayList; public class Solution { public ArrayList<Integer> printMatrix(int [][] arr) { int col=arr[0].length; //列 int row=arr.length; //行 ArrayList result=new ArrayList<>(); int top=0,bottom=0,left=0,right=0; while(true) { if((top+bottom)==row||(left+right)==col) break; //四个值只要有一个变化就检查是否已经遍历完 //右方向 for(int j=left;j<col-right;j++) result.add(arr[top][j]); top++; if((top+bottom)==row||(left+right)==col) break; //四个值只要有一个变化就检查是否已经遍历完 //下方向 for(int i=top;i<row-bottom;i++) result.add(arr[i][col-1-right]); right++; if((top+bottom)==row||(left+right)==col) break; //四个值只要有一个变化就检查是否已经遍历完 //左方向 for(int j=col-1-right;j>=left;j--) result.add(arr[row-1-bottom][j]); bottom++; //上方向 if((top+bottom)==row||(left+right)==col) break; //四个值只要有一个变化就检查是否已经遍历完 for(int i=row-1-bottom;i>=top;i--) result.add(arr[i][left]); left++; } return result; } }