从数组中获取所有重复项,而不会遍历超过1

时间:2013-03-25 04:32:56

标签: c# .net

我有一个整数数组列表int [] marks = {2,3,4,5,4,5,6,2,9};

我希望在此列表中获取所有副本,并且数组shold只遍历一次。 没有inbuild函数应该使用因为每个inbuild函数也遍历每个serch。

预期结果应为2,4,5

3 个答案:

答案 0 :(得分:1)

好吧,只要资格证明您只能遍历此列表一次,就可以创建另外两个列表,1个非重复列表和1个重复列表。

遍历输入列表,然后检查非重复项是否具有int。如果没有,则添加它,如果是,则将其添加到dups(如果它还没有包含它)。最后,重复应该有您要求的结果。

答案 1 :(得分:1)

int[] marks = { 2, 3, 4, 5, 4, 5, 6, 2, 9 };
Dictionary<int, bool> flags = new Dictionary<int, bool>();
HashSet<int> result = new HashSet<int>();

for (int index = 0; index < marks.Length; index++)
{
    if (flags.ContainsKey(marks[index])) result.Add(marks[index]);
    else flags.Add(marks[index], true);
}

答案 2 :(得分:0)