(leetcode算法题)137. 只出现一次的数字 II

处理这种数据集中只有一个数出现的频次为1,其他数出现的频次均为k的题目

往往都是使用位运算的进行求解

假设 target在数据集中只出现了1次,其他数据n1, ... nj都出现了 k 次,

考虑数据集中所有数据的第 i 位的取值,那么将会有j + 1个比特位,其中如果n1 到 nj中有且仅有 x个数字在第 i 位取1,其他的数字在第 i 位取0

那么将这 j 个数全部相加,得到的结果为α,α一定是 k 的倍数,

那么((target >> i ) & 1 + α) % k一定等于(target >> i ) & 1

所以将这j + 1个比特位相加之后对k 取模,得到的一定是 target在第 k位的取值

cpp 复制代码
class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ret = 0;
        for(int i = 0; i < 32; i++){
            int tmp = 0;
            for(auto & num : nums){
                tmp += (num >> i) & 1;
            }
            ret += ((tmp % 3) << i);
        }
        return ret;
    }
};
相关推荐
luj_17682 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法
mCell3 小时前
你以为短链接只是 Hash + 301/302?
后端·算法·架构
KaMeidebaby5 小时前
卡梅德生物技术快报|抗体亲和力成熟工业化调控新机制:差异性浆细胞增殖工艺优化思路
java·开发语言·人工智能·算法·机器学习·架构·spark
luj_17685 小时前
心形曲线轨迹控制三大关键技术
c语言·开发语言·c++·经验分享·算法
tmlx3I0815 小时前
高光谱拼接算法(六)RANSAC 误匹配剔除
人工智能·算法·机器学习
不相心 -w-6 小时前
基础-滑动窗口-(定长 | 不定长)
算法
醉城夜风~6 小时前
Java详解经典算法题:接雨水(三种实现方案+原理剖析)
java·开发语言·算法
ysa0510306 小时前
【板子】ST表
c++·笔记·算法·板子
CHHH_HHH7 小时前
【C++11】深入解析C++可变参数模板
开发语言·c++·算法·stl·c++11
hurrycry_小亦7 小时前
洛谷题目:P1215 [USACO1.4] 母亲的牛奶 Mother‘s Milk 题解(本题简)
算法