私はn個の整数のリストを与えられていて、これらの整数は1からnの範囲です。リストに重複はありません。しかし、整数の1つがリストにありません。欠落している整数を見つけなければなりません。シーケンス内に見つからない番号を見つける
Example: If n=8
I/P [7,2,6,5,3,1,8]
O/P 4
I am using a simple concept to find the missing number which is to get the
sum of numbers
total = n*(n+1)/2
And then Subtract all the numbers from sum.
ただし、数値の合計が最大許容整数を超えた場合、上記の方法は失敗します。
だから私は、第二の溶液を検索し、次のように私は方法を見つけました:?
1) XOR all the elements present in arr[], let the result of XOR be R1.
2) XOR all numbers from 1 to n, let XOR be R2.
3) XOR of R1 and R2 gives the missing number.
をこのメソッドが動作しているどのように.. R1とR2のXORは、上記の場合には不足している整数を見つけている方法?
強引に強制するのはどうですか?配列をソートし、 '[n - (n-1)]'が1に等しくないインデックスの数を確認してください。 – Renan
なぜ最大許容整数はありますか? – VoronoiPotato
@ VoronoiPotato:シーケンスに10億の数字があり、32ビットの整数に限定されている場合はどうなりますか? –