从队列中删除重复值

时间:2016-01-16 19:12:40

标签: c# queue

我有一个非常精确的问题,我必须编写一个方法来获取队列并删除队列中不止一次的每个部分,例如:for 11223344 它将返回一个1234的队列

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以使用IEnumerable的{​​{3}}功能:

Queue<int> a = new Queue<int>(); // This is the queue from which you want to remove duplicates.
Queue<int> result = new Queue<int>(a.Distinct());

A Distinct()本质上是一个集合,因此可以调用IEnumerable,因此可以调用IEnumerable类型 的LINQ扩展方法。

这是一个演示:Queue

答案 1 :(得分:0)

这基本上是一个重复:

取决于您的输入:

  • 如果您有一个已排序的整数队列,则将每个元素出列并且 只排队一次。当你回到第一个整数(低于 以前),你停下来。
  • 使用哈希表/字典作为临时存储来有效地查找重复项。
  • 一个简单的解决方案(不是最有效的,需要相当多的临时内存,如果队列中有数百万个元素会很糟糕)就像使用Linq一样新的队列(queueWithDuplicates.Distinct());

更多关于不同作用的读物:    How does LINQ .distinct method sort?