2016-11-25 20 views
1

配列には、配列(1,2,3,4,6,8,9)が与えられます。 ここに2つの数字がありません。私の質問は、1つ以上の数字が見つからない場合、どのように見つけるかです。配列から1つ以上の番号が見つからない場合、それらの番号を見つける方法?

+5

いくつかのコード例とプログラミング言語が役に立ちます。本質的にはあなたのコードを書くようにお願いします。 –

答えて

3

アレイがソートされていない場合は、ソートしてから、隣接要素で1以上の増加を探します。

1

minとmaxを抽出し、配列をminとmaxの範囲と比較することができます。

Rubyの例:

array = [1,2,3,4,6,8,9] 
min, max = array.minmax 
missing = (min..max).to_a - array 
#=> [5,7] 

またはソートとJavascript(原則はキャリーオーバーすべきである)で1

array = [1,2,3,4,6,8,9,12] 
array.sort.each_cons(2) do |a,b| 
    if (b-1) > a then 
    (a+1..b-1).each do |i| 
     puts "#{i} is missing" 
    end 
    end 
end 

# 5 is missing 
# 7 is missing 
# 10 is missing 
# 11 is missing 
+0

私は最大と最小を得るIDが本当に好きです。それらを差し引くだけで配列の長さを調べれば、何個が見つからないかを知ることができます。 – Seb

+0

配列に重複がなく、整数だけが含まれていることを確認する必要があります。それ以外の場合、 '3,3,5'と' 3,3,1,5'は一致します –

0

よりも大きいですギャップを見て、あなたはあなたの仕事その後、数値的にそれを並べ替えることができますアレイには存在しない番号を探しています。あなたがそれらを見つけると、あなたはそれをメモして移動することができます。

はこちらをご覧:

var numberArray = [1, 2, 3, 4, 6, 8, 9, 15, 12]; 
 
var missingArray = []; 
 

 
function findMissing() { 
 
    var sortedArray = numberArray.sort(function(a, b) { 
 
    return a - b 
 
    }); 
 
    var currentNo = sortedArray[0]; 
 

 
    for (let i = 0; i < sortedArray.length; i++) { 
 
    if (sortedArray[i] == currentNo) { 
 
     currentNo++ 
 
    } else { 
 
     missingArray.push(currentNo); 
 
     i--; 
 
     currentNo++; 
 
    } 
 
    } 
 
    document.querySelector(".problem").innerHTML = "Array numbers are " + numberArray; 
 
    document.querySelector(".result").innerHTML = "Missing numbers are " + missingArray; 
 
} 
 

 
findMissing();
<div class="problem"></div> 
 
<div class="result"></div>

・ホープ、このことができます。

関連する問題