当前位置: 首页 > 编程语言 > C#

如何检查我的数组中是否有重复值?分享

时间:2023-04-11 00:18:34 C#

如何检查我的数组中是否有重复值?所以这是我的数组。双[]testArray=新双[10];//会生成一个1-20的随机数,懒得写代码我想创建一个搜索循环来检查重复值。我该怎么做我不想使用任何特殊的内置方法,因为这是一个小数组。你可以用一点Linq来做到这一点:Distinct扩展方法删除所有重复项,Count获取结果集大小。如果它们完全不同,列表中就会有一些重复。或者,这是一个更复杂的查询,但它可能更有效:if(testArray.GroupBy(x=>x).Any(g=>g.Count()>1)){Console.WriteLine("Containsduplicates");}GroupBy方法将任何相同的元素组合在一起,如果任一组具有多个元素,则Any返回true。上述两种解决方案都通过使用HashSet来工作,但您可以直接使用它:或者,如果您更喜欢完全不依赖Linq的解决方案:varhashSet=newHashSet();foreach(varxintestArray){if(!hashSet.Add(x)){Console.WriteLine("包含重复项");休息;}}通用扩展方法:publicstaticboolHasDuplicate(thisIEnumerablesource,IEqualityComparercomparer){if(source==null)thrownewArgumentException(nameof(source));HashSetset=newHashSet(比较器);foreach(variteminsource)if(!set.Add(item))returntrue;返回假;}使用这个:boolCheckUniqueness(double[]values){varuniqueValues=newHashSet();foreach(doubledinvalues){if(uniqueValues.Contains(d)){returnfalse;}uniqueValues.Add(d);}返回真;}请参阅我的通用且高效的p??ublicstaticboolHasDuplicates(IListitems){Dictionarymap=newDictionary();for(inti=0;iherearesomecallsstring[]strings=new[]{"1","2","3"};Utility.HasDuplicates(strings)//这将返回falseint[]items=new[]{1,2,3,1};快速回收率:~0.000002%。staticboolrepeat(double[]a){返回a[0]==a[1]||a[0]==a[2]||a[0]==a[3]||a[0]==a[4]||a[0]==a[5]||a[0]==a[6]||a[0]==a[7]||a[0]==a[8]||a[0]==a[9]||a[1]==a[2]||a[1]==a[3]||[1]==[4]||a[1]==a[5]||a[1]==a[6]||a[1]==a[7]||a[1]==a[8]||a[1]==a[9]||a[2]==a[3]||a[2]==a[4]||a[2]==a[5]||a[2]==a[6]||a[2]==a[7]||a[2]==a[8]||a[2]==a[9]||一[3]==一[4]||a[3]==a[5]||a[3]==a[6]||a[3]==a[7]||a[3]==a[8]||a[3]==a[9]||a[4]==a[5]||a[4]==a[6]||a[4]==a[7]||a[4]==a[8]||a[4]==a[9]||a[5]==a[6]||[5]==[7]||a[5]==a[8]||a[5]==a[9]||a[6]==a[7]||a[6]==a[8]||a[6]==a[9]||a[7]==a[8]||a[7]==a[9]||a[8]==a[9];}更常见,比10个数快2倍,但比hashset方法快7倍。staticboolrepeat(double[]a){intk=a.Length-1;如果(k=i;j--)如果(aj==a[j])返回真;for(aj=a[i++],j=i;j();while(k>=0)if(!h.Add(a[k--]))returnfalse;returntrue;}两行(慢repeat;)staticboolrepeat(double[]a){return(newHashSet(a).Count我们必须在第一个循环中从i初始化j并添加一个(i+1)因为我们要合并第一个循环值与同一个数组的下一个值进行比较。以上是C#学习教程:如何检查我的数组中是否有重复值?所有内容分享,如果对大家有用还需要多了解下C#学习教程,希望大家多多关注—int[]arr=newint[]{1,2,3,1,4,2,5,4};//为arr值创建一个循环for(inti=0;i站,如涉及侵权,请点右联系管理员删除,如需转载请注明出处: