剑指offer-29 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

思路就是不断移动上下左右的边界,按照上右下左的方式进行遍历

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;




    }
}
原文地址:https://www.cnblogs.com/jieyi/p/14308776.html