在不遍历超过1的情况下从数组中获取所有重复项

本文关键字:获取 数组 遍历 情况下 | 更新日期: 2023-09-27 18:05:43

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

我想在这个列表中得到所有重复的数组,数组应该只遍历一次。不应该使用内置函数,因为每个内置函数也会遍历每次搜索。

预期结果应为2,4,5

在不遍历超过1的情况下从数组中获取所有重复项

好吧,只要限定条件是只能遍历此列表一次,就可以再创建两个列表,1个非重复列表和1个重复列表。

遍历输入列表,然后检查非重复项是否具有int类型。如果没有,那么添加它,如果有,那么如果它还没有包含它,那么将它添加到dup中。最后,dup应该有您所要求的结果。

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);
}

按此查找在线性时间内重复

相关文章: