LeetCode--Single Number

题目:

Given an array of integers, every element appears twice except for one. Find that single one.

Note:

Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

代码:

    int singleNumber(vector<int>& nums) {
        int n = 0;
        for(int i = 0; i < nums.size(); ++i)
        {
            n ^= nums[i];
        }
        return n;
    }

运用"按位异或"

a^b^a = b;

将所有数异或,所有出现两次的都消除,得到出现一次的那个.

posted on 2015-11-03 10:54  小二杰  阅读(72)  评论(0编辑  收藏  举报

导航