剑指 Offer 29. 顺时针打印矩阵

2022/2/8 6:13:47

本文主要是介绍剑指 Offer 29. 顺时针打印矩阵,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

剑指 Offer 29. 顺时针打印矩阵

老面孔了,只要画图注意边界即可。

class Solution {
    public int[] spiralOrder(int[][] matrix) {
        int u = 0, d = matrix.length - 1;
        // 排除非矩阵的情况
        if(d < 0) {
            return new int[]{};
        }
        int l = 0, r = matrix[0].length - 1;
        int[] res = new int[matrix.length * matrix[0].length];
        int idx = 0;
        while(u <= d && l <= r) {
            // 上方的
            if(u <= d && l <= r) {
                for(int i = l; i <= r; i++) {
                    res[idx] = matrix[u][i];
                    idx++;
                }
            }
            u++;
            // 右侧的
            if(u <= d && l <= r) {
                for(int i = u; i <= d; i++) {
                    res[idx] = matrix[i][r];
                    idx++;
                }
            }
            r--;
            // 下方的
            if(u <= d && l <= r) {
                for(int i = r; i >= l; i--) {
                    res[idx] = matrix[d][i];
                    idx++;
                }
            }
            d--;
            // 左侧的
            if(u <= d && l <= r) {
                for(int i = d; i >= u; i--) {
                    res[idx] = matrix[i][l];
                    idx++;
                }
            }
            l++;
        }
        return res;
    }
}


这篇关于剑指 Offer 29. 顺时针打印矩阵的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程