给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。

你必须设计并实现线性时间复杂度的算法且不使用额外空间来解决此问题。

 

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/single-number-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

前面有说到可以异或两次来消除数组中出现两次的数字以此来找到特殊数组中只出现一次的数字,但是若数组中有三次重复出现便不能在故技重施了,

于是便有了另一种方法。

我们知道一个整型数字的大小是4字节由32比特位组成,我们可以统计各个数字每一位出现的一是否为3的倍数+1来找到只出现一次数字的32位码,

我们将一个大小为32的整型数组全部初始化为零,依次统计所有数字各个比特位出现一的次数,之后将出现次数为3N+1的位数一次按位与0,便得到了只出现了一次的数字。

代码实现:

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3