【发布时间】:2012-07-18 03:37:02
【问题描述】:
假设给定一个数组,所有元素都出现N次,但只有一个出现K次。
例子:
N=3, K=1, A = [1,1,1,2,2,3,3,3,4,4,2,4,5]
N=2, K=1, A = [1,1,2,2,3,3,4]
我刚刚查看了以下两个主题:
Number which occurs only once in the array; 使用异或运算,当k为奇数n为偶数时,这个问题似乎很容易解决。
Given an array that contains all elements thrice except one. Find the element which occurs once. 很难找到时间复杂度为 O(N) 且空间复杂度为 O(1) 的算法来解决这个问题。
有没有小伙伴可以给点意见?是否可以解决?
【问题讨论】:
-
很确定这是重复的,但我找不到确切的问题。这个想法是(假设 N%K!=0)为每个位计算模 N(而不是计算模2 用于常规异或),然后具有非零计数的位给出结果值。
-
谢谢,我不知道如何命名这个问题。也许我会搜索其他关键字。
-
@Nabb 您的解决方案实际上不是 O(N) 时间,O(1) 空间!由于您使用的是 O(N.log R) 时间和 O(log R) 空间,其中 R 是元素的范围。
标签: algorithm