簡體   English   中英

檢查所有 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應該返回isDigit
  • 輸入矩陣_3x3需要在某處定義和填充,或者作為參數傳遞給allDigit

解決上述問題后,代碼應檢測_3x3數組中的所有數字是否都屬於封閉范圍[1, 9] ,即,如果輸入矩陣的所有單元格中都包含1 ,則代碼返回true

但是,如果任務的目的是檢查輸入矩陣是否包含所有數字,即沒有重復項,則不應調用單獨的find方法。 相反,需要一個 boolean 數組來檢查重復條目:

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]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM