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

【LeetCode】Single Number II (3 solutions)

时间:2014-11-20 18:29:54      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   for   

Single Number II

Given an array of integers, every element appears threetimes 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记录次数

class Solution {
public:
    int singleNumber(int A[], int n) {
        map<int, int> m;
        for(int i = 0; i < n; i ++)
        {
            map<int, int>::iterator it = m.find(A[i]);
            if(it == m.end())
                m[A[i]] = 1;
            else
                m[A[i]] ++;
        }
        for(map<int, int>::iterator it = m.begin(); it != m.end(); it ++)
        {
            if(it->second != 3)
                return it->first;
        }
    }
};

bubuko.com,布布扣

 

解法二:先排序,再遍历找出孤异元素

class Solution 
{
public:
    int singleNumber(int A[], int n) 
    {
        sort(A, A+n);
        //note that at least 4 elements in A
        if(A[0] != A[1])
            return A[0];
        if(A[n-1] != A[n-2])
            return A[n-1];
        for(int i = 1; i < n-1; i ++)
        {
            if(A[i] != A[i-1] && A[i] != A[i+1])
                return A[i];
        }
    }
};

bubuko.com,布布扣

 

解法三:位操作。不管非孤异元素重复多少次,这是通用做法。

对于右数第i位,如果孤异元素该位为0,则该位为1的元素总数为3的整数倍。

如果孤异元素该位为1,则该位为1的元素总数不为3的整数倍(也就是余1)。

换句话说,如果第i位为1的元素总数不为3的整数倍,则孤异数的第i位为1,否则为0.

(如果非孤异元素重复n次,则判断是否为n的整数倍)

class Solution {
public:
    int singleNumber(int A[], int n) {
        int count;
        int ind = 1;    //mask position
        int result = 0;
        while(ind)
        {
            count = 0;
            for(int i = 0; i < n; i ++)
            {
                if(A[i] & ind)
                    count ++;
            }
            if(count % 3)
                result |= ind;  //position ind is 1
            ind <<= 1;
        }
        return result;
    }
};

bubuko.com,布布扣

【LeetCode】Single Number II (3 solutions)

标签:style   blog   http   io   ar   color   os   sp   for   

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

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