题解 | #螺旋矩阵#

螺旋矩阵

https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31

    public ArrayList<Integer> spiralOrder(int[][] matrix) {
        ArrayList<Integer> list = new ArrayList<>();
        //判断空
        if(matrix.length==0) return list;
        //设定四个边界,上下左右边界
        int top=0,bottom=matrix.length-1;
        int left=0,right=matrix[0].length-1;
    //四个循环搞定一圈,外层再次循环用来循环所有, //直到边界重合
        while(left<=right && top<= bottom){
            //上边界的从左到右
            for (int i = left; i <=right ; i++) {
                list.add(matrix[top][i]);
            }
            //上边界相应就往下一行,要判断上下边界是否相遇相交。
            top++;
            if(top>bottom) break;
            //右边界的从上到下
            for (int i = top; i <=bottom ; i++) {
                list.add(matrix[i][right]);
            }
            //上边界相应就往下一行,要判断上下边界是否相遇相交。
            right--;
            if(left>right) break;
            //下边界的从右到左
            for (int i = right; i >=left ; i--) {
                list.add(matrix[bottom][i]);
            }
            //下边界相应就往上一行,要判断上下边界是否相遇相交。
            bottom--;
            if(top>bottom) break;
            //左边界的从下到上
            for (int i = bottom; i >=top ; i--) {
                list.add(matrix[i][left]);
            }
            //左边界就相应往右一列,要判断左右边界是否相遇相交。
            left++;
            if(left>right)break;
        }
        return list;
    }

全部评论

相关推荐

07-15 18:09
门头沟学院 Java
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务