美文网首页
只出现一次的数 II

只出现一次的数 II

作者: SunspotsInys | 来源:发表于2019-06-09 10:52 被阅读0次

源码如下

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        
        const int W = sizeof(int) * 8; //
        int count[W];
        fill_n(&count[0], W, 0);
        for (int i = 0; i < nums.size(); i++) {
            for (int j = 0; j < W; j++) {
                count[j] += (nums[i] >> j) & 1;
                count[j] %= 3;
            }
        }
        int result = 0;
        for (int i = 0; i < W; i++) {
            result += (count[i] << i);
        }
        return result;
        
    }
};

创建一个数组,第i位表示在i位出现1的次数, 如果第i位是3的倍数则忽略,否则把该位取出组成答案。
在题解里面提供了用二进制模拟三进制的方法,看不懂,实现不了。不过找到,附在下面,说不定那天就看懂了。

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int one = 0, two = 0, three = 0;
        for (auto i : nums) {
            two |= (one & i);
            one ^= i;
            three = ~(one & two);
            one &= three;
            two &= three;
        }
        return one;
    }
};

相关文章

  • 只出现一次的数 II

    源码如下 创建一个数组,第i位表示在i位出现1的次数, 如果第i位是3的倍数则忽略,否则把该位取出组成答案。在题...

  • leetcode探索初级算法之数组

    推荐:只出现一次的数字,旋转数组,两个数组的交集 II 和 两数之和。 1. 删除排序数组中的重复项 给定一个排序...

  • 只出现一次的数

    题目需求 /*** 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次...

  • 只出现一次的数

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算...

  • 只出现一次的数

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你...

  • 只出现一次的数字 II

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。 说明: ...

  • 只出现一次的数字 II

    从网上找的大神的解法,略难理解 题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了...

  • 只出现一次的数字 II

    给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了...

  • LeetCode 137. 只出现一次的数字 II

    137. 只出现一次的数字 II 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出...

  • LeetCode [剑指 Offer II 070. 排序数组中

    LeetCode 剑指 Offer II 070. 排序数组中只出现一次的数字[https://leetcode....

网友评论

      本文标题:只出现一次的数 II

      本文链接:https://www.haomeiwen.com/subject/phmgxctx.html