码迷,mamicode.com
首页 > 其他好文 > 详细

【LeetCode】Single Number (2 solutions)

时间:2014-06-07 23:44:39      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

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?

 

解法一:用map记录每个元素的次数,返回次数为1的元素

bubuko.com,布布扣
class Solution {
public:
    map<int,int> m;
    int singleNumber(int A[], int n) {
        for(int i = 0; i < n; i ++)
        {
            map<int,int>::iterator it = m.find(A[i]);
            if(it == m.end())
                m.insert(map<int,int>::value_type(A[i], 1));
            else
                it->second = 2;
        }

        for(map<int,int>::iterator it = m.begin(); it != m.end(); it ++)
        {
            if(it->second == 1)
                return it->first;
        }
    }
};
bubuko.com,布布扣

bubuko.com,布布扣

 

解法二:利用异或操作的结合律。同一数字异或自己结果为0.x^x=0

bubuko.com,布布扣
class Solution 
{
public:
    
    int singleNumber(int A[], int n)
    {
        int sum = 0;
        for(int i = 0; i < n; i ++)
            sum ^= A[i];
        return sum;
    }
};
bubuko.com,布布扣

bubuko.com,布布扣

 

【LeetCode】Single Number (2 solutions),布布扣,bubuko.com

【LeetCode】Single Number (2 solutions)

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/ganganloveu/p/3774619.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!