gpt4 book ai didi

c# - 如何检查我的数组中是否有重复值?

转载 作者:可可西里 更新时间:2023-11-01 07:50:01 27 4
gpt4 key购买 nike

这是我的数组。

double[] testArray = new double[10];
// will generate a random numbers from 1-20, too lazy to write the code

我想创建一个搜索循环来检查是否有重复的值。我该怎么做?

我不想使用任何特殊的内置方法,因为这是一个小数组。

最佳答案

你可以用一点 Linq 来做到这一点:

if (testArray.Length != testArray.Distinct().Count())
{
Console.WriteLine("Contains duplicates");
}

Distinct 扩展方法删除所有重复项, Count 获取结果集的大小。如果它们完全不同,则说明列表中存在一些重复项。

或者,这里有更复杂的查询,但它可能更有效:

if (testArray.GroupBy(x => x).Any(g => g.Count() > 1))
{
Console.WriteLine("Contains duplicates");
}

GroupBy 方法会将任何相同的元素组合在一起,并且 Any 返回 true如果任何组具有多个元素。

上述两种解决方案都通过使用 HashSet<T> 来工作。 , 但你可以像这样直接使用一个:

if (!testArray.All(new HashSet<double>().Add))
{
Console.WriteLine("Contains duplicates");
}

或者如果您更喜欢完全不依赖 Linq 的解决方案:

var hashSet = new HashSet<double>();
foreach(var x in testArray)
{
if (!hashSet.Add(x))
{
Console.WriteLine("Contains duplicates");
break;
}
}

关于c# - 如何检查我的数组中是否有重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19757992/

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