讨论/技术交流/第 498 题 对角线遍历 有问题求解答 谢谢/
第 498 题 对角线遍历 有问题求解答 谢谢

498. 对角线遍历

class Solution {
    public int[] findDiagonalOrder(int[][] matrix) {
        int N = matrix.length;
        int M = matrix[0].length;
        int row = 0;
        int column = 0;
        int direction = 1;   // direction为1时,对角线方向向上;为0时方向向下
        int a = N * M ;
        int result[] = new int[a];
        for (int i =0;i<a+1;i++){
            result[i] = matrix[row][column];
            if(direction ==1){
                if (row == 0){
                    column = column + 1;
                    direction = 1 - direction;
                }
                else{
                    row = row -1;
                    column = column +1;
                }
            }
            else{
                if(column == 0){
                    row = row + 1;
                    direction = 1 - direction;
                }
                else{
                    row = row +1;
                    column = column -1;
                }
            }
        }
        
        return result;
    }
        


}

运行之后 显示result[i] = matrix[row][column]这行数组越界 看了许久也没想出怎么修改 求大佬们指出 谢谢

共 1 个回复

这个问题把越界的地方,用小的测试数据打印出来看一下就很清楚了,我感觉大佬看这个问题也得调试。