落單的數
描述
筆記
數據
評測
給出2*n + 1 個的數字,除其中一個數字之外其他每個數字均出現兩次,找到這個數字。
您在真實的面試中是否遇到過這個題? Yes
樣例
給出 [1,2,2,1,3,4,3],返回 4
挑戰
一次遍歷,常數級的額外空間複雜度
標籤
相關題目
解法一:
class Solution {
public:
/**
* @param A: Array of integers.
* return: The single number.
*/
int singleNumber(vector<int> &A) {
// write your code here
if(A.size()==0) return 0;//不要忘了容錯
sort(A.begin(),A.end());
map<int,int> m;
for(int i=0;i<A.size()-1;i++){
m[A[i]]++;
if((i%2==1)&&(m[A[i]]!=2)) return A[i-1];
}
return A[A.size()-1];
}
};
解法二:
利用異或
int singleNumber(vector<int> &A) {
// write your code here
if(A.size()==0) return 0;
int ans=0;
for(auto c:A)
ans^=c;
return ans;
}