2017-02-27 6 views
-3

タスク: intの配列が与えられた場合、値3が配列内に正確に3回現れ、3が隣り合っていない場合はtrueを返し、それ以外の場合はfalseを返します。Javaが配列内に3つのnumを見つける

これは私の現在のコードです:

public static boolean contains(int[] arr, int item) { 
    for (int n : arr) { 
    if (item == n) { 
     return true; 
    } 
    } 
    return false; 

答えて

0
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; 
    } 
+0

あなたのコードに 'n'とは何ですか? –

+0

さて、プログラムの他の部分はどこですか? –

+0

入力を受け入れるコードを探していますか?あなたはそれをすることができるはずです。私たちは、あなたが配列a及び数3であなたがここに与えられた答えのいずれかを使用する必要があり、主な方法で行い、合格している今、すべて、それはよさそうだS.Mac @ –

1

あなたは、配列を反復処理し、倍アイテムアレイの数をカウントする必要があります。また、前のアイテムがあなたが探していたものかどうかを追跡する必要があります。例:

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; 
} 
+0

わかりましたが、プログラムの他の部分ですか? –

+0

私はあなたのコードを見ていた、あなたは次の値のチェックをしていた方法を見つけ出すことができなかった、と私はそれを通じて段階、それは巧妙なソリューション良い仕事です! –

0

簡単です。あなたのコードに次のリビジョンを見てください:

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); 
} 
+0

さて、プログラムの他の部分はどこですか? –

+0

どうしても、カウント=== 3 –

+1

@EduardoDennisを返すために、最後の行を簡素化することができます。私はちょうどそれを編集しました。それをキャッチするためにありがとう。 – VHS

-1
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; 
} 
+0

メソッドは、探している番号を受け入れる必要があります。あなたの質問に –

+0

あなたは「3」は、具体的に言って、探されている番号を受け入れについては何も言いませんでした。 – MariaVincent

関連する問題