算法:只出现一次的数字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;
    }
相关推荐
bubiyoushang88820 小时前
LFM脉冲串信号的模糊函数
算法
踩坑记录20 小时前
leetcode hot100 11.盛最多水的容器 medium 双指针
算法·leetcode·职场和发展
MM_MS21 小时前
Halcon基础知识点及其算子用法
开发语言·人工智能·python·算法·计算机视觉·视觉检测
大厂技术总监下海21 小时前
数据湖加速、实时数仓、统一查询层:Apache Doris 如何成为现代数据架构的“高性能中枢”?
大数据·数据库·算法·apache
hetao173383721 小时前
2026-01-06 hetao1733837 的刷题笔记
c++·笔记·算法
a努力。21 小时前
国家电网Java面试被问:最小生成树的Kruskal和Prim算法
java·后端·算法·postgresql·面试·linq
洛生&21 小时前
Counting Towers
算法
Evand J21 小时前
【MATLAB例程,附代码下载链接】基于累积概率的三维轨迹,概率计算与定位,由轨迹匹配和滤波带来高精度位置,带测试结果演示
开发语言·算法·matlab·csdn·轨迹匹配·候选轨迹·完整代码
X在敲AI代码21 小时前
LeetCode 基础刷题D2
算法·leetcode·职场和发展
源代码•宸1 天前
Leetcode—1929. 数组串联&&Q1. 数组串联【简单】
经验分享·后端·算法·leetcode·go