(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;
    }
};
相关推荐
南烟斋..1 分钟前
Linux系统编程核心知识指南
linux·算法
Jerryhut5 分钟前
光流估计从原理到实战:基于 Lucas-Kanade 算法与 OpenCV 实现
人工智能·opencv·算法
数据大魔方13 分钟前
【期货量化实战】豆粕期货量化交易策略(Python完整代码)
开发语言·数据库·python·算法·github·程序员创富
memmolo15 分钟前
【3D传感技术系列博客】
算法·计算机视觉·3d
不爱编程爱睡觉15 分钟前
代码随想录算法训练营第四十三天 | 图论理论基础、深搜理论基础、98. 所有可达路径、广搜理论基础
算法·leetcode·图论·代码随想录
六毛的毛16 分钟前
冗余连接II
算法
永远都不秃头的程序员(互关)28 分钟前
【K-Means深度探索(二)】K值之谜:肘部法则与轮廓系数,如何选出你的最佳K?
算法·机器学习·kmeans
玄冥剑尊30 分钟前
回溯算法深化 II
算法·回溯算法
Tisfy38 分钟前
LeetCode 3453.分割正方形 I:二分查找
算法·leetcode·二分查找·题解·二分
漫随流水39 分钟前
leetcode算法(101.对称二叉树)
数据结构·算法·leetcode·二叉树