元素重复三次的数组中查找重复一次的元素
文章目录
题目:
给定一个大数组,它里面除了一个元素外,其他元素都重复了三次,要求在空间复杂度为O(1), **时间复杂度为O(n)**的约束下,查找到只重复了一次的元素。
意思就是说:这意味着算法必须对数组遍历1次就要找出给定元素。
解题思路
参考位图算法,
- 声明两个变量 firstAppear(FA) 和 secondAppear(SA) ,初始值均为零
- 当某一位第一次出现1时,FA的该位值为1
- 当想通位第二次出现1时,FA该位值为0,SA该位值为1
- 当想通位第三次出现1时,FA该位值为0,SA该位值为0
这样,出现三次的数值都会被过滤掉,而只出现一次的数值会留在FA中。
假设 E 为元素某位的值,我们需要有 newFA 和 newSA 来临时储存新的值,按照结果推到出关于 newFA 的如下表格:
SA/E |
---|