首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从元素中删除重复的部件元素,而不偏袒稍后发生的元素

如何从元素中删除重复的部件元素,而不偏袒稍后发生的元素
EN

Stack Overflow用户
提问于 2015-06-28 18:21:32
回答 1查看 33关注 0票数 2

我知道那是个可怕的标题。我没有接受过CS的训练,所以我还没有上过算法课程来知道这可能是什么。

让我解释一下:

我有一个包含6个数字集合的数组:

代码语言:javascript
复制
 var theList = [{[1,2,3,4,5,6],[1,2,3,4,5,7],[1,2,3,4,6,7],[1,3,4,5,6,7]}];

这个数组可以很大。然后,我将遍历数组中的每一项,并计数其中三组的出现情况。ie 1 2 3出现3次,2 3 4出现3次,等等。我将此信息保存在另一个数组中,其计数显示为索引3:

代码语言:javascript
复制
var countList = [{[1,2,3,3],[2,3,4,3]}]

接下来我要做的是检查每组6人(来自theList),并检查countList中每组3人的出现次数。如果它们都大于1,则删除这组6,减少countList中的计数,然后继续到下一个数字。

这似乎是可行的,然而,数字仍然包含了数量众多的三人组,从较高的数字。例如,如果数字从1-10开始,当计算完成时,较低的三组(1,2,3,1,2,4)很少出现,但是更高的三组(6,7,8,8,9)有很多次出现,所以我最后得到的是一组六组,从重复搜索开始的低数,但它们都以相同的几个高数结束。

我的看法是,由于countList是排序的,而六组列表(theList)是排序的,所以它会更经常地“看到”那些较低的三组,并与它们一起删除六组,但是当它到达较高的数字时,较低的组都被删除了,因此它们“必须”存在。

有什么算法我可以查一下吗?

如果这让人困惑,我很抱歉,谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-28 19:25:10

正如您所述,由于theList是排序的,所以您倾向于删除较低的运行次数而不是较高的运行次数。如果你想要对称,那么一种方法是在开始去除阶段之前随机地洗牌theList

随机调整一个(Javascript)数组是一个众所周知的问题.请参阅this community Wiki question,以获得现成的答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31103219

复制
相关文章

相似问题

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