【LeetCode】每日一题 2024_10_12 求出出现两次数字的 XOR 值(哈希、模拟)

前言

每天和你一起刷 LeetCode 每日一题~

LeetCode 启动!

题目:求出出现两次数字的 XOR 值

昨天没有更新,因为昨天的题目和前天的每日一题是一模一样的,只是同一道题目,加强了数据范围,恰好的是,前天做这道题的时候我就在题解中分析了暴力做法和优化后的 nlogn 做法 . . . 所以昨天就没有直接把文章 CV 之后再发一遍了~

代码与解题思路

今天的题目比较简单~

题目要求对出现两次的数相互进行异或操作,用哈希计数,出现第二次就异或到 ans 中即可

go 复制代码
func duplicateNumbersXOR(nums []int) (ans int) {
    // 哈希计数,出现两次的就异或一下
    cnt := map[int]int{}
    for _, v := range nums {
        cnt[v]++
        if cnt[v] > 1 { // 出现两次
            ans ^= v
        }
    }
    return ans
}

有没有更优的解法呢?

已经做到了 O(N) 的时间复杂度,再往下一步就是做到 O(1) 的空间复杂度了。

对于集合计数相关的题目,还有一种巧妙的方法,通过数字的二进制位来实现一个集合:

go 复制代码
func duplicateNumbersXOR(nums []int) (ans int) {
    vis := 0
    for _, v := range nums {
        if vis >> v & 1 == 1 { // 该位置是 1,代表该数字已经出现过一次,这次是第二次
            ans ^= v // 出现两次的值异或到一起
        } else {
            vis |= 1 << v // 把该值转化成二进制位加入 vis 集合中
        }
    }
    return ans
}

每天进步一点点,我们明天不见不散~

可以和我刷一辈子的每日一题吗?

一题一题,积累起来就是一辈子。

相关推荐
1白天的黑夜115 分钟前
哈希表-49.字母异位词分组-力扣(LeetCode)
c++·leetcode·哈希表
CoovallyAIHub38 分钟前
基于YOLO集成模型的无人机多光谱风电部件缺陷检测
深度学习·算法·计算机视觉
CoovallyAIHub38 分钟前
几十个像素的小目标,为何难倒无人机?LCW-YOLO让无人机小目标检测不再卡顿
深度学习·算法·计算机视觉
怀旧,1 小时前
【C++】19. 封装红⿊树实现set和map
linux·c++·算法
往事随风去1 小时前
Redis的内存淘汰策略(Eviction Policies)有哪些?
redis·后端·算法
神里流~霜灭1 小时前
(C++)数据结构初阶(顺序表的实现)
linux·c语言·数据结构·c++·算法·顺序表·单链表
一只乔哇噻2 小时前
java后端工程师进修ing(研一版 || day41)
java·开发语言·学习·算法
愚润求学2 小时前
【贪心算法】day7
c++·算法·leetcode·贪心算法
要开心吖ZSH2 小时前
软件设计师备考-(十六)数据结构及算法应用(重要)
java·数据结构·算法·软考·软件设计师
带娃的IT创业者2 小时前
如何开发一个教育性质的多线程密码猜测演示器
网络·python·算法