Leetcode68: Single Number

来源:互联网 发布:怎样注册淘宝账户 编辑:程序博客网 时间:2024/05/29 02:54

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?

解法1:用map数据结构来记录次数,费时且费空间

class Solution {public:    int singleNumber(vector<int>& nums) {        map<int, int> mp;        for(int i = 0; i < nums.size(); i++){            if(mp.find(nums[i]) == mp.end())            {                mp.insert(make_pair(nums[i],1));            }            else                mp[nums[i]] ++;        }        map<int ,int>::iterator it;        for(it = mp.begin(); it != mp.end(); it++)        {            if(it->second == 1)                return it->first;        }    }};
解法2:(非原创,这特么谁想出来的!) 采用异或操作

class Solution {public:    int singleNumber(vector<int>& nums) {        int res = 0;        for(int i = 0; i < nums.size(); i++)        {            res ^= nums[i];        }        return res;    }};



0 0
原创粉丝点击