演習は次のとおりです。
1 から 10,000 までの連番のリストが与えられましたが、それらはすべて順不同です。さらに、1 つの番号がリストから欠落しています。このタスクの目的は、欠落している数を見つけることです。
この問題に対する戦略は、配列内の要素を合計し、次に 1 から 10,000 の範囲を合計し、差を引くことです。これは欠落数と同じです。1..n
からの範囲の合計を計算する式n(n+1)/2
。
これは私の現在のアプローチです:
def missing_number(array)
sum = 0
array.each do |element|
sum += element
end
((10000*10001)/2) - sum
end
つまずいたのは、次のような配列を入力したときの出力です。
puts missing_number(*1..10000) #=> 0
なぜこれが起こるのですか?
ありがとう!