让我们说像这样的数组:
double [] numbers = new double[] {1,1,2,2,5,7,7,7};
我想以时间有效的方式将不同的数字复制到一个新数组(结果应该是数字= {1,2,5,7})。我知道如何以一种低效的方式做到这一点 - 通过查看下一个数字是否与之前的数字相同并继续复制循环(如果它们)。还有另一种方式吗?
答案 0 :(得分:7)
using System.Linq;
double[] newArray = numbers.Distinct().ToArray();
答案 1 :(得分:2)
如果您没有Linq,可以执行以下操作:
List<double> uniques = new List<double>;
foreach (double num in numbers)
{
if (!uniques.Contains(num)) uniques.Add(num);
}
double[] uniquearray = uniques.ToArray();
答案 2 :(得分:1)
显然,有必要检查列表中的每个元素来执行此操作。您描述的“时间效率低下”的方式实际上已经描述了您必须做的事情的基本要素。如果您想要一种方便的方法,Linq已经定义了Distinct()
运算符,然后您可以将其与ToArray()
结合使用。