Lintcode(S)落单的数

来源:互联网 发布:中山大学取消网络教育 编辑:程序博客网 时间:2024/06/05 03:19

落单的数

描述
笔记
数据
评测
给出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;    }
0 0
原创粉丝点击