乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。
1.借助雜湊表記錄出現數字的頻率和下標,最後遍歷雜湊表查詢,時間複雜度和空間複雜度均為o(n);
#includeclass solution
else if(n == 2)
unordered_map> m;
m[data[0]] = ;
for(int i = 1; i < n; ++i);
}else
it->second.second++;
}
for(auto it = m.begin(); it != m.end(); ++it)
else
*num2 = data[it->second.first];}}
}};
2.位運算,相同數字異或運算後結果為0,時間複雜度o(n),空間複雜度o(1)
#includeclass solution
else if(n == 2)
int temp = data[0];
for(int i = 1; i < n; ++i)
int index = 0;//尋找哪一位為1,根據該為是否為1可分為兩組,每一組必然有乙個只出現一次的數
while((temp & 1) == 0)
for(int i = 0; i < n; ++i)
}bool isbit(int num, int index)
};
劍指offer JZ40 陣列中只出現一次的數字
題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。num1,num2分別為長度為1的陣列。傳出引數 將num1 0 num2 0 設定為返回結果 public class solution int mask 1 while k mask 0 for...
劍指 Offer JZ35 陣列中的逆序對
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 看下面鏈結吧,最近有些忙,暫時沒時間仔細研究這道題,之後再回來看。96bd6684e04a44eb...
劍指offer JZ35陣列中的逆序對
時間限制 c c 2秒,其他語言4秒 空間限制 c c 32m,其他語言64m 熱度指數 577791 本題知識點 陣列 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p...