package
0.0.0-20230809123828-b071cee2968a
Repository: https://github.com/codehanhan/leetcode-go.git
Documentation: pkg.go.dev
# README
只出现一次的数字 II
1. 题目描述
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素
2. 示例
示例1
输入:nums = [2,2,3,2]
输出:3
示例2
输入:nums = [0,1,0,1,0,1,99]
输出:99
提示
- $1 <= nums.length <= 3 * 10^4$
- $-2^31 <= nums[i] <= 2^31 - 1$
- nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次
3. 解题
- 二进制统计 统计每个二进制位上1的出现次数,例如对于以下数: $$(110)_2, (110)_2, (110)_2, (001)_2$$
可统计出,第一个二进制位(最低位)上1的个数为1, 第二个为3, 第三个为3 即为[3, 3, 1]
得出的结果都进行模3, 则得到的结果即为只出现一次的数字的二进制表示 [3%3, 3%3, 1%3] = [0, 0, 1] = 1
对于此种方法来说,需要注意的问题是负数问题
- 排序后比较 先将数组排序,排序完成后每次取3个比较,若比较出某个不同值,即为只出现一次的值