任務:給定一個int數組,如果值3正好出現在數組中,則返回true,否則3將彼此相鄰,否則返回false。Java在數組中找到三個數
這是我當前的代碼:
public static boolean contains(int[] arr, int item) {
for (int n : arr) {
if (item == n) {
return true;
}
}
return false;
任務:給定一個int數組,如果值3正好出現在數組中,則返回true,否則3將彼此相鄰,否則返回false。Java在數組中找到三個數
這是我當前的代碼:
public static boolean contains(int[] arr, int item) {
for (int n : arr) {
if (item == n) {
return true;
}
}
return false;
public static boolean contains(int[] arr, int item) {
// Count of number of occurences
int count=0;
for (int i = 0; i < arr.length; i++) {
if(arr.length-1 == i){
if(arr[i] == item)
count++;
}else {
if (arr[i] == item && arr[i] + 1 == item)
return false;
if(arr[i] == item)
count++;
}
}
return count == 3;
}
你應該迭代這個數組並計算時代的項目陣列的數量。此外,您需要跟蹤前一個項目是否是您正在查找的項目。例如:
public static boolean contains(int[] arr, int item) {
int count = 0;
boolean prev = false;
for (int n : arr) {
if (n == item) {
if (prev) {
return false;
}
++count;
prev = true;
if (count > 3) { // Optimization - could be removed
return false;
}
} else {
prev = false;
}
}
return count == 3;
}
好了,但如果是程序的其他部分? –
我只是看着你的代碼,無法弄清楚你是如何對下一個值進行檢查的,並且我通過了它,這是一個聰明的解決方案! –
這很簡單。請看下面的修訂版本的代碼:
public static boolean contains(int[] arr, int item) {
int count=0;
for (int i=0;i<arr.length;i++) {
if (item == arr[i]) {
if(i+1 < arr.length && item == arr[i+1])
return false;
else count++;
}
}
return (count == 3);
}
public static contains(int[] arr) { int index = -2; int count = 0; for (int i = 0; i < arr.length; i++) { if (arr[i] == 3) { if (i-1 != index) { index = i; count++; } else { contains = false; break; } } if (count != 3) { contains = false; } return contains; }
該方法需要接受正在查找的號碼。 –
在你的問題中,你特別說「3」,並沒有說任何關於接受正在查找的號碼。 – MariaVincent
代碼中的'n'是什麼? –
好的,但程序的其他部分在哪裏? –
您是否在尋找接受輸入的代碼?你應該可以做到這一點。我們給你的方法的邏輯.. –