gpt4 book ai didi

c# - 使用单循环在数组中查找重复项

转载 作者:太空狗 更新时间:2023-10-29 22:13:49 28 4
gpt4 key购买 nike

问题是有一个未排序的数组,最大值应该小于长度。我必须在数组中找到重复的记录。条件是只使用一次循环。这是我到目前为止所取得的成就。我想知道是否有任何其他方法可以实现这一目标。

int[] Arr = { 9, 5, 6, 3, 8, 2, 5, 1, 7, 4 };
int[] Arr2 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
for (int i = 0; i < Arr.Length; i++)
{
if (Arr2[Arr[i]] == 0)
{
Arr2[Arr[i]] = Arr[i];
}
else
{
Console.WriteLine("duclicate found");
}
}

最佳答案

使用任何Set实现,说HashSet<T> ,例如

HashSet<int> hs = new HashSet<int>();
int[] Arr = { 9, 5, 6, 3, 8, 2, 5, 1, 7, 4 };

foreach (item in Arr)
if (hs.Contains(item)) {
Console.WriteLine("duplicate found");
// break; // <- uncomment this if you want one message only
}
else
hs.Add(item);

编辑hs.Add返回 bool可以放置更短、更高效的代码:

HashSet<int> hs = new HashSet<int>();
int[] Arr = { 9, 5, 6, 3, 8, 2, 5, 1, 7, 4 };

foreach (item in Arr)
if (!hs.Add(item)) {
Console.WriteLine("duplicate found");
// break; // <- uncomment this if you want one message only
}

关于c# - 使用单循环在数组中查找重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22930266/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com