136. Single Number

链接

136. Single Number

题意

给定一个数组,里面的元素除了一个只出现一次之外,都出现了两次。找出只出现一次的那个元素。

思路

大概最好的解法就是用位运算了。而异或运算正好符合这道题的特征。两个相同的数进行异或结果为0,那么可以将数组中的所有数进行异或(异或还符合交换律),出现两次的数会被抵消掉,剩下的就只有那个“单身数”了

代码

C:

int singleNumber(int* nums, int numsSize) {
    int ans = 0;
    for(int i = 0; i < numsSize; i++) {
        ans ^= nums[i];
    }
    return ans;
}

效率

Your runtime beats 19.29% of c submissions

posted @ 2017-03-20 11:56  zyoung  阅读(148)  评论(0编辑  收藏  举报