题解 | #螺旋矩阵#

螺旋矩阵

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;
    }

全部评论

相关推荐

02-14 12:40
门头沟学院 Java
程序员花海:1.面试要求必须Java笔试不一定 2.难度对等秋招 远超于日常实习是因为同一批次且转正很多 竞争压力大 3.第一个加点指标,上线了就把接口性能加上去 使用本地缓存这个不算亮点 只是技术选型,要把为什么采用这个和背后的思考写出来而不是单纯堆叠技术没意义 4.八股要一直看 很容易忘记 5.拼团交易这个老问题 堆积技术 另外建议你把奖项合并到教育背景 没必要拆出来放最后
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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