输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
思路就是不断移动上下左右的边界,按照上右下左的方式进行遍历
class Solution { public int[] spiralOrder(int[][] matrix) { List<Integer> list=new ArrayList<Integer>(); if(matrix.length==0){ return new int[0]; } int m=matrix.length; int n=matrix[0].length; int t=0,l=0,r=n-1,b=m-1; while(list.size()<m*n){ //从左到右 for(int i=l;i<=r;i++){ list.add(matrix[t][i]); } ++t; //从上到下 for(int i=t;i<=b;i++){ list.add(matrix[i][r]); } --r; //从右到左 for(int i=r;i>=l;i--){ list.add(matrix[b][i]); } --b; //从下到上 for(int i=b;i>=t;i--){ list.add(matrix[i][l]); } ++l; } int []res=new int[m*n]; for(int i=0;i<m*n;i++){ res[i]=list.get(i); } return res; } }