[英]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;
}
}
}
呈現的代碼包含幾個錯別字:
find
中num
參數的類型必須是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.