LeetCode—剑指Offer:顺时针打印矩阵(暴力)

顺时针打印矩阵(简单)

2020年8月25日

题目来源:力扣

在这里插入图片描述

解题
由题目可知,顺序是往右走,往下走,往左走,往上走。以此为规律循环。

需要设定四条边界,每次走完都收缩边界

class Solution {
    
    
    public int[] spiralOrder(int[][] matrix) {
    
    
        if(matrix.length==0) return new int[0];
        //求四边界
        int left=0,right=matrix[0].length-1,top=0,bottom=matrix.length-1,id=0;
        int[] res=new int[(right+1)*(bottom+1)];
        while(true){
    
    
            //走上边界
            for(int i=left;i<=right;i++){
    
    
                res[id++]=matrix[top][i];
            }
            //上边界走完了,收缩
            if(++top>bottom) break;
            //走右边界
            for(int i=top;i<=bottom;i++){
    
    
                res[id++]=matrix[i][right];
            }
            //右边界走完了,收缩
            if(--right<left) break;
            //走下边界
            for(int i=right;i>=left;i--){
    
    
                res[id++]=matrix[bottom][i];
            }
            //下边界走完了,收缩
            if(--bottom<top) break;
            //走左边界
            for(int i=bottom;i>=top;i--){
    
    
                res[id++]=matrix[i][left];
            }
            //左边界走完了,收缩
            if(++left>right) break;
        }
        return res;
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41541562/article/details/108212777