有一个问题困扰着我,不知何故,我想不出该怎么办。假设给出了一个数组{9,1,2,4,1,2,2}。数组中的唯一元素是9和4。输出数组应该是{1,2,1,2,2}。我保留顺序和查找重复项的想法是使用一个LinkedHashMap,它将包含条目和条目出现的计数。
问题是维持元素的顺序。一旦我把条目放在hashMap中,命令就会消失。
发布于 2016-01-21 22:29:12
我会这样做:
发布于 2016-01-21 22:22:23
没有什么能让数组消失。只需对数组进行迭代,检查映射中的值是否大于一个。
发布于 2016-01-21 22:23:49
因此,一种简单的方法是首先计数每个元素的数量(可以在O(n)中完成),在计数器上迭代,并将count =1的所有元素放在一个集合中(也可以在O(n)中)。
现在,运行原始列表,并打印所有不在您的集合中的元素(也是O(n))。因此,解决方案将在O(n)时间和空间中运行。
下面是python中的2行解决方案:
from collections import Counter
arr = [9,1,2,4,1,2,2]
unique = {k for k, v in Counter(arr).iteritems() if v == 1}
print [i for i in arr if i not in unique]https://stackoverflow.com/questions/34935410
复制相似问题