JZ19-顺时针打印矩阵

顺时针打印矩阵

https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a?tpId=13&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey

class Solution {
    public ArrayList<Integer> printMatrix(int[][] matrix) {
        if (matrix == null || matrix.length == 0) {
            return null;
        }
        if (matrix[0].length == 0) {
            return null;
        }
        ArrayList<Integer> list = new ArrayList<>();

        int minM = 0;  //M行
        int minN = 0;  //N列
        int maxM = matrix.length - 1;
        int maxN = matrix[0].length - 1;

        while (minM <= maxM && minN <= maxN) {
            for (int i = minN; i <= maxN; i++) {  //上边
                list.add(matrix[minM][i]);
            }
            for (int i = minM + 1; i <= maxM; i++) {  //右边  //如果测试案例只有一行数据minM = maxM。。。i = minM + 1>maxM根本不会执行
                list.add(matrix[i][maxN]);
            }
            if (minM != maxM) {  //如果只有一行,既minM = maxM 不需要执行此步。。不然上下边重合会计算两次  //下边
                for (int i = maxN - 1; i >= minN; i--) {
                    list.add(matrix[maxM][i]);
                }
            }
            if (minN != maxN) {  // 左边  同要判断
                for (int i = maxM - 1; i > minM; i--) {  //最后一处要空出一行
                    list.add(matrix[i][minN]);
                }
            }
            minM++;
            minN++;
            maxM--;
            maxN--;
        }
        return list;
    }
}

全部评论

相关推荐

11-13 12:02
门头沟学院 Java
我要娶个什么名:好骂,好骂 别学计算机就行了
点赞 评论 收藏
分享
秋招投简历提醒助手:个人经验是,一般面二十场左右就会进入侃侃而谈阶段。我今年七月末的时候开始的第一次面试,都是很多不会,回复很慢。后面慢慢迭代,到九月中的时候基本上面啥说啥,很放松的状态
远程面试的尴尬瞬间
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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