Lintcode(S)落單的數

落單的數

描述
筆記
數據
評測
給出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;
    }
發佈了140 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章