配列がソートされていると仮定すると、最初のN個の自然数の配列に1、2、最初のN個の自然数の配列の1,2,3個の欠損番号を見つける
再び、アレイがソートされると仮定すると、次のコードは、私は同じことを行う多くの回答を見てきました
function findMissingNumbers(array) {
for (var i = 0; i < array.length; i++) {
if (array[i] != (i + 1)) {
return i + 1;
}
}
return 'no missing numbers found';
}
var missingArr = [1, 3, 4, 5, 6, 7];
console.log(findMissingNumbers(missingArr));
(原因return
ステートメントに)欠けている一つの値を返すために動作します(1を見つけます期待値の総和から期待値を差し引いて欠損値を求めることで、欠損値を見つけることができます。
私は私のようにiを使ってこのコードがうまくいかないことを知っています。もしarr [i]!= i + 1なら欠けている値を新しい配列にプッシュして書きましたが、最初の欠損値の正しい値のみを返します。
どのようにこの問題にアプローチしますか?
あなたは配列に戻り値の型を変更し、私はあなたがその場合は自然数のソートされた配列を想定して右ここにいると思うあなたの条件 – fafl
を再考ことができ、 a [i] ==私はあなたに番号がない場合があります。これを最適にするには、バイナリ検索を考えて、最初に見つかった[i]!= i見つかった番号を特定してから検索を続けます(検索条件を変更する必要があります。 a [i]と私はあなたが配列している場所に基づいて変わります)。 b-searchを使用すると、すべての項目をチェックする必要はありません。あなたの明示的な質問については、私は戻り値の型を変更するだけです – Assaf
配列に欠損している自然数を "最初の値の正しい値を返す"ようにするのはなぜですか?それはどういう意味ですか? – nbro