我有一个整数数组列表 int[] 标记 = {2,3,4,5,4,5,6,2,9};
我想在此列表中获取所有重复项,并且数组只遍历一次。不应使用任何 inbuild 函数,因为每个 inbuild 函数也会遍历每个 serch。
预期结果应该是 2,4,5
好吧,只要条件是您只能遍历 THIS 列表一次,您就可以再创建两个列表,1 个非重复项和 1 个重复项。
遍历输入列表,然后检查非重复项是否具有 int。如果没有,则添加它,如果是,则将其添加到 dups,如果它尚未包含它。最后,dups 应该有您要求的结果。
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);
}
按照这个在线性时间内找到重复