-4

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

我想在此列表中获取所有重复项,并且数组只遍历一次。不应使用任何 inbuild 函数,因为每个 inbuild 函数也会遍历每个 serch。

预期结果应该是 2,4,5

4

3 回答 3

1

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

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

于 2013-03-25T04:45:12.497 回答
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);
}
于 2013-03-25T04:50:20.687 回答
0

按照这个在线性时间内找到重复

于 2013-03-25T04:45:27.280 回答