检查所有 9 位数字是否在 java 中的 3*3 二维数组中

Check if all 9 digits are in 3*3 2d array in java

我正在处理必须检查所有 9 位数字是否都在 3x3 矩阵中的问题。
我知道我应该遍历 3x3 矩阵并检查每个数字是否为数字。 这是我的代码,但我没有相关说明。

public boolean find(int num) {
    int []a = {1, 2, 3, 4, 5, 6, 7, 8, 9};

    for (int i = 0; i < a.length; i++)
        if (a[i] == num)
            return true;
    return false;
}

public boolean allDigit() {  
    boolean isDigit = true;
    for (int i = 0; i< _3x3.length; i++) {
        for(int j = 0; j < _3x3[i].length; j++) {
            if (!find(_3x3[i][j]))
                isDigit = false;
        }
    }
}

提供的代码包含几个拼写错误:

  • findnum 参数的类型必须是 int
  • 方法allDigit应该returnisDigit到底
  • 输入矩阵 _3x3 需要在某处定义和填充,或者作为参数传递给 allDigit

解决上述问题后,代码应检测 all _3x3 数组中的数字是否属于闭范围 [1, 9],即,如果输入矩阵在其所有单元格中包含 1,代码 returns true.

但是,如果任务的目的是检查输入矩阵是否包含所有数字,即不存在重复条目,那么单独的find 方法不应该被调用。相反,需要一个布尔数组来检查重复条目:

public boolean allDigitsPresent(int[][] arr) {
    boolean[] digitSet = new boolean[10];
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            int d = arr[i][j]; // digit
            if (d <= 0 || d >= digitSet.length) {
                return false; // invalid value in the matrix
            }
            if (digitSet[d]) { // already set, duplicate is found
                return false;
            }
            digitSet[d] = true;
        }
    }
    return true; // no duplicate digit is found, all digits are in range [1..9]
}