运行 Java 语言设置矩阵零代码中的时间错误消息

Run time error message in set matrix zero code in Java language

我在 运行 这段代码时遇到了这个错误,我不知道如何解决这个问题

运行时错误消息:

警告:命令行选项已启用安全管理器

警告:安全管理器已弃用,将在未来的版本中删除

java.lang.ArrayIndexOutOfBoundsException:索引 1 超出长度 1

在第 14 行,Solution.setZeroes

在第 54 行,DriverSolutionhelper

在第 84 行,Driver.main

最后执行的输入:

[[1],[0]]

密码是:

class Solution {
public void setZeroes(int[][] matrix) {
        boolean firstColumnZero = false;
        boolean firstRowZero = false;
        
        for(int i=0;i<matrix.length;i++){
            if(matrix[i][0]==0){
                firstColumnZero = true;
                break;
            }
        }
        
        for(int i=0;i<matrix.length;i++){
            if(matrix[0][i]==0){
                firstRowZero = true;
                break;
            }
        }
        for(int i=0;i<matrix.length;i++){
            for(int j=0;j<matrix[0].length;j++){
                if(matrix[i][j]==0){
                    matrix[i][0]=0;
                    matrix[0][j]=0;
                }
            }
        }
            
        for(int i=1;i<matrix.length;i++){
            for(int j=1;j<matrix[0].length;j++){
                if(matrix[i][0]==0||matrix[0][j]==0){
                    matrix[i][j]=0;
                }
            }
        }
        
        if(firstColumnZero){
            for(int i=0;i<matrix.length;i++){
                matrix[i][0]=0;
            }
        }
    if(firstRowZero){
        for(int i=0;i<matrix[0].length;i++){
            matrix[0][i]=0;
        }
    }
}

}

输出为:

已接受

运行时间:0 毫秒

您的意见

[[1,1,1],[1,0,1],[1,1,1]]

[[0,1,2,0],[3,4,5,2],[1,3,1,5]]

输出

[[1,0,1],[0,0,0],[1,0,1]]

[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

预计

[[1,0,1],[0,0,0],[1,0,1]]

[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

这段代码可能是您的问题:

for ( int i = 0; i < matrix.length; i++ )
{
    if ( matrix[0][i] == 0 )
    {
        firstRowZero = true;
        break;
    }
}

您需要将 for 语句更改为:

for ( int i = 0; i < matrix[0].length; i++ )