算法:只出现一次的数字II

题目

链接:leetcode链接


思路分析

这道题目其实是一个观察题,比较考察观察能力。

数组中只有一个元素只出现一次,其他的元素都出现三次

我们假设有n个元素出现三次

那么所有的元素的第i位的和加起来只有下面的四种情况

3n * 0 + 0

3n * 0 + 1

3n * 1 + 0

3n * 1 + 1

我们将其%3 会发现

结果与仅出现一次的元素在该位上的数字一样。

3n * 0 + 0 %3 = 0

3n * 0 + 1 %3 = 1

3n * 1 + 0 %3 = 0

3n * 1 + 1 %3 = 1

所以,我们的思路就出来了

我们只需要去获取这个只出现一次的元素在每一个bit位上的数字即可。

代码

C++ 复制代码
int singleNumber(vector<int>& nums) {
        int n = nums.size();
        int ans = 0;

        for(int i = 0;i < 32;++i)
        {
            int bit = 0;
            for(auto& e:nums)
            {
                bit += ((e >> i) & 1);
                bit %= 3;
            }

            if(bit == 1)
            {
                ans |= (1 << i);
            }
        }

        return ans;
    }
相关推荐
fab 在逃TDPIE1 小时前
Sentaurus TCAD 仿真教程(十)
算法
天赐学c语言1 小时前
12.19 - 买卖股票的最佳时机 && const的作用
c++·算法·leecode
菜鸟233号1 小时前
力扣78 子集 java实现
java·数据结构·算法·leetcode
yesyesyoucan1 小时前
在线魔方解谜站:从零入门到精通的智能魔方学习平台
学习·算法
Han.miracle1 小时前
数据结构与算法--008四数之和 与经典子数组 / 子串问题解析
数据结构·算法
!停1 小时前
字符函数和字符串函数
算法
AI科技星2 小时前
圆柱螺旋运动方程的一步步求导与实验数据验证
开发语言·数据结构·经验分享·线性代数·算法·数学建模
FONE_Platform2 小时前
FONE食品饮料行业全面预算解决方案:构建韧性增长
人工智能·算法·全面预算·全面预算管理系统·企业全面预算
月明长歌2 小时前
【码道初阶】【Leetcode94&144&145】二叉树的前中后序遍历(非递归版):显式调用栈的优雅实现
java·数据结构·windows·算法·leetcode·二叉树
DanyHope2 小时前
《LeetCode 49. 字母异位词分组:哈希表 + 排序 全解析》
算法·leetcode·哈希算法·散列表