【杂题】剑指 Offer 29. 顺时针打印矩阵

本问题对应课程链接:剑指offer刷题第五期

要求:

1、请打卡你的解题代码,如果能简单说一下思路则简单说一下思路。
2、给出你代码所用的时间复杂度和空间复杂度

共以下 1 个回答

  • 塔底的仰望 永久会员 2023年9月17日 下午9:38

    想到力扣官方题解第二种做法了,不过细节上没处理好..

    class Solution {
        public int[] spiralOrder(int[][] matrix) {
            if(matrix == null || matrix.length == 0 || matrix[0].length == 0){
                return new int[0];
            }
    
            int l = 0, r = matrix[0].length - 1, t = 0, b = matrix.length - 1;
            int[] res = new int[(r+1) * (b+1)];
            int k = 0;
            while(true){
                // 从左到右
                for(int i = t,j = l; j <= r; j++){
                    res[k++] = matrix[i][j];
                }
                if(++t > b) break;
                // 从下往上
                for(int i = t, j = r; i <= b; i++){
                    res[k++] = matrix[i][j];
                }
                if(l > --r) break;
                // 从右往左
                for(int i = b, j = r; j >= l; j--){
                    res[k++] = matrix[i][j];
                }
                if(t > --b) break;
                // 从下往上
                for(int i = b, j = l; i >= t; i--){
                    res[k++] = matrix[i][j];
                }
                if(++l > r) break;
            }
            return res;
        }
    }
    
    0 赞同 0 条回复

# 回答此问题

后才能回答