LeetCode136—Single Number

来源:互联网 发布:网络媒介类型主要有 编辑:程序博客网 时间:2024/05/23 16:02

原题

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


分析

找出一堆数中只出现一次的数。

用Hash做是很简单的,都能想到,后面题目说不用额外的内存。

用按位异或的办法就能解决。


代码

使用hash的版本。

class Solution {public:    int singleNumber(vector<int>& nums) {        unordered_map<int,int>table;        for(int i=0;i<nums.size();i++)        {            table[nums[i]]=table[nums[i]]+1;        }        for(auto it = table.begin();it!=table.end();it++)        {            if(it->second==1)                return it->first;            else                continue;        }        return nums[0];    }};

按位异或的办法

class Solution {public:    int singleNumber(vector<int>& nums) {        if(nums.size()==1)            return nums[0];        for(int i = 1;i<nums.size();i++)        {            nums[0]^=nums[i];        }        return nums[0];    }};
1 0
原创粉丝点击