2017-11-11 5 views
-2

私は5の配列を持っていますintegerscount[5]と私は彼らの違いが3を超えているかどうかをチェックしたいと思います。javaの5つの数字の相違をチェックする方法

ブルートフォースは何をすることができますif(count[5]-count[4])>3) ,if(count[5]-count[3]>3)

はそれを行うには良い方法はありますか?

+0

は重要な配列のためですか?ループを使用して各要素を反復処理すると、次の要素の違いを確認できます。 "強化されたforループ"を見て、それを使って各要素の反復処理を行い、その差が3より大きいかどうかをテストします。出力をどのように見えるかに応じて、これは使用可能な解決策になります。 – OnlySteveH

+4

1回の反復で、 'min'と' max'の値を見つけてdiffを確認できます。 – alfasin

+0

@OnlySteveH要素と次の要素との間の差分を反復してチェックするループは、連続する項目間にないと仮定して最大の差分を見つける方法はありますか? – alfasin

答えて

-2

アレイ内の数字を大きくする場合はforループを使用できます。

int[5] count = {1,2,3,4,5} 
for(int i = 0; i < count.length; i++){ 
    for(int j = 0; j < count.length; j++){ 
    if(((count[i] - count[j]) > 3) || ((count[i] - count[j])<-3)){ 
     //TODO 
    } 
    } 
} 
+1

あなたdidn 'count [0] -count [4]' –

+1

また、 'count [0] = - 10'と' count [1] = - 2'の場合はどうなりますか? 'count [0] -count [1] = - 8' –

+0

新しいコードは、あなたが述べた両方のシナリオをカバーすると思います... –

0

ない、それを行うには非常に効率的な方法が、

Integer min = Arrays.<Integer>asList(arr).stream().min(Comparator.naturalOrder()); 
Integer max = Arrays.<Integer>asList(arr).stream().min(Comparator.naturalOrder()); 
Integer spread = max - min; 

は、トリックを行います。

アレイが大きい場合は、同時に実行するトラッカーがminとmaxになるようにreduceを実行することをお勧めします。あなたが本当にそれを必要とするかどうか教えてください。

0

ここでは、Javaコードの実装:

public static boolean diff(int[] ar) { 
     boolean result = true; 
     for (int i = 0; i < ar.length; i++) { 
      for (int j = 0; j < ar.length; j++) { 
       if (Math.abs(ar[i] - ar[j]) > 3) { 
        result = false; 
       } 
      } 
     } 
     return result; 
} 
関連する問題