假定是整数,则对于所有1 \ le k \ le n均为0 \ le A [k] \ le m,并且每个出现除A [1 \ l点缀n]中的特定数字以外的数字是奇数。尝试查找出现为偶数的数字。
有一个算法:我们将A [1 \ ldotd n]排序为,然后将分解成许多块,其元素值为相同,因此我们可以计算每个元素的出现。
我想找到最坏的情况 -时间和 -空间算法。
假设和,那么基数排序是不可接受的。 二进制按位运算是可接受的,例如。
Aryabhata在下面的回答表明一般情况不好,但是也许您还有其他限制?一个简单(但很大)的限制是强制数组中的所有条目的大小均为
—
路加·马蒂森
。这将给出一个非常简单的线性算法。
@LukeMathieson:我删除了这个答案,因为我尚不相信所引用的论文可以进行任何修改,此外,OP似乎只对统一成本RAM模型感兴趣。
—
Aryabhata 2012年
@Aryabhata:呵呵,那答案就不存在了!出于有趣,也许对弗兰克(Frank)有用,您认为修改论文中的结果是什么问题?快速浏览表明它适用,但是我显然没有读懂它。
—
路加·马西森
@LukeMathieson:在当前问题中其他元素需要出现奇数次的事实。从那以后,我也略过了证明……
—
Aryabhata 2012年