ITPub博客

首页 > > > [LeetCode] Single Number II

[LeetCode] Single Number II

作者:Ruiyuan Li 时间:2015-06-19 00:00:00 0 删除 编辑

Single Number II

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

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

解题思路:

与Single Number不同,这里不能再用异或操作来做了。可以为每个位上1的数目计数。然后将该计数%3,剩下的1肯定是单独的数字贡献的。

class Solution {
public:
    int singleNumber(vector& nums) {
        vector bitNumCount(32, 0);
        int len = nums.size();
        for(int i=0; i>1;
            }
        }
        int result = 0;
        for(int i=31; i>=0; i--){
            result = result<<1;
            if(bitNumCount[i]%3!=0){
                result += 1;
            }
        }
        return result;
    }
};

上面用了一个32位的向量。经过优化,还可以更为精简:

class Solution {
public:
    int singleNumber(vector& nums) {
        int result = 0;
        int len = nums.size();
        for(int i=0; i<32; i++){
            int count = 0;
            for(int j=0; j>i)&1;
            }
            result += (count%3)<


转载请注明: » [LeetCode] Single Number II
<!-- -->

原文作者:;如有侵权,请联系管理员删除。

下一篇: [LeetCode] Word Ladder
请登录后发表评论 登录
全部评论

注册时间:2020-05-21

  • 博文量
    495
  • 访问量
    4825