OJ lintcode 落单的数

给出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 &A) {
        // write your code here
        if(A.size()==0){
            return 0;
        }
        if (A.size() == 1) {
            return A[0];
        }

        set si;
        si.insert(A[0]);
        for (int i = 1; i < A.size(); i++) {
            if (si.find(A[i]) == si.end()) {
                //bu chunzai 
                si.insert(A[i]);
            }
            else {
                si.erase(A[i]);
            }
        }

        auto it = si.begin();
        return *it;
    }
};

你可能感兴趣的:(OJ lintcode 落单的数)