2016-05-17 9 views
1

私は異なる整数の配列を持っているので、[46, 18, 49, 15]のいずれかに近い数字があるかどうかを知りたいこの場合の他の数値は存在しないので、関数はfalseを返さなければならないが、例えば[14, 31, 13, 40, 30] 30と31が互いに近く、14と13が互いに等しいので、関数は真を返さなければならない。感謝! ありがとう!配列内の数字のいずれかに近い数字があるかどうかを調べる

+3

*クローズ*を定義してください、それは1のちょうどデルタのですか? –

+1

30と31は近いですが、15と16と13と14は...ではありません。 – deceze

+1

配列をソートして、隣接するペアが「閉じる」かどうかを確認します。 –

答えて

2

デルタをソートして確認してください。

function close(a) { 
 
    a.sort(function (a, b) { return a - b; }); 
 
    return a.some(function (b, i, aa) { 
 
     return i && b - aa[i - 1] <= 1; 
 
    }); 
 
} 
 

 
document.write(close([14, 31, 13, 40, 30])+'<br>'); 
 
document.write(close([46, 18, 49, 15]) + '<br>');

4

数字を並べ替えます。次に、数字をループし、各数字について、この数字が次の数字から1を差し引いたものかどうかを確認します。それが真の場合は、trueを返します。それ以外の場合は、ループを終了した場合はfalseを返します。

+0

この番号は次の番号から1を差し引いたものです。**または**この番号+ 1は次の番号と同じです**。 .... OPは何も試していないが、この質問に答えるのに+1。 – Jai

関連する問題