首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从数组中删除唯一元素并按原始顺序打印元素的算法

从数组中删除唯一元素并按原始顺序打印元素的算法
EN

Stack Overflow用户
提问于 2016-01-21 22:16:44
回答 6查看 93关注 0票数 1

有一个问题困扰着我,不知何故,我想不出该怎么办。假设给出了一个数组{9,1,2,4,1,2,2}。数组中的唯一元素是94。输出数组应该是{1,2,1,2,2}。我保留顺序和查找重复项的想法是使用一个LinkedHashMap,它将包含条目和条目出现的计数。

问题是维持元素的顺序。一旦我把条目放在hashMap中,命令就会消失。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-01-21 22:29:12

我会这样做:

  1. 创建 HashMap count =新的HashMap();
  2. 迭代数组,将数组值作为键存储,并将值的计数作为值存储在hashmap中。
  3. 第二次迭代数组,如果计数到键为1,则从数组中移除值。
票数 0
EN

Stack Overflow用户

发布于 2016-01-21 22:22:23

没有什么能让数组消失。只需对数组进行迭代,检查映射中的值是否大于一个。

票数 1
EN

Stack Overflow用户

发布于 2016-01-21 22:23:49

因此,一种简单的方法是首先计数每个元素的数量(可以在O(n)中完成),在计数器上迭代,并将count =1的所有元素放在一个集合中(也可以在O(n)中)。

现在,运行原始列表,并打印所有不在您的集合中的元素(也是O(n))。因此,解决方案将在O(n)时间和空间中运行。

下面是python中的2行解决方案:

代码语言:javascript
运行
复制
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]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34935410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档