26.leetcode题目136: 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?

分析:

刚刚在网易群里看到有人在讨论这一题,所以就做了一下,但是我想,之所以这么顺利,还是得源于他们提示要用异或操作

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        //if(nums.empty())
        //return 0;
        int res=0;
        for(vector<int>::size_type i=0;i<nums.size();++i){
            res^=nums[i];
        }
        return res;
    }
};
上面代码被注释掉的两行影响运行时间,注释前20ms,注释后16ms,所以在编写代码时要考虑周全,不要写多余的句子。
另外的方法是遍历,用map(键值表示数组中的元素,值表示每个元素出现的次数)


异或:0^a=a      a^a=0

你可能感兴趣的:(26.leetcode题目136: Single Number)