給定乙個包含[0,n]中n個數的陣列nums,找出[0,n]這個範圍內沒有出現在陣列中
的那個數字.
示例 1:
input:nums=[3,0,1]
output:2
示例 2:
input:nums=[0,1]
output:2
因為有2個數字,所有數字都在[0,2]之間內.
示例 3:
input:nums=[9,6,4,2,3,1,5,7]
output:8
解題思路:
方法1利用等差數列求和公式求出總和,然後與陣列的總和做差.
方法2位運算
通過異或進行,a^a=0,a^0=a
#include #include using namespace std;
class solution
int missingornumber(vector& nums);
cout
}
尋找丟失的數字(二)
擴充套件問題二 至多掃瞄一遍序列,求出丟失的兩個數字。不管用什麼方法,可以肯定的是我們至少需要掃瞄一遍序列。因為只能掃瞄一遍,所以先求出 a xor b,再根據結果分類的方法就不適用了。既然我們不能根據某一位分類,那我們能否對所有位進行分類呢?比如,int是32位,我們可以對每一位都分成兩類分別異或...
面試題之尋找丟失的數字
據傳說是ms google等等it名企業的面試題 有一組數字,從1到n,中減少了乙個數,順序也被打亂,放在乙個n 1的陣列裡 請找出丟失的數字,最好能有程式,最好演算法比較快 btw1 有很多種方法的哦,據說o n 的方法就不止一種 btw2 擴充套件問題,如果丟失了2個數字呢?btw3 一定要小心...
MS Google面試題 尋找丟失的數字
題目 有一組數字,從1到n,其中丟失了乙個數字,且順序也被打亂的儲存在乙個 size 為n 1的陣列中 要求 找出丟失的數字,最好能有程式,最好演算法比較快 btw1 有很多種方法哦,據說o n 的方法不止一種 btw2 擴充套件問題,如果丟失兩個,並找出這兩個數字 或者,丟失三個,找出三個中的任意...