我在计算数组中的唯一值时遇到了问题,我需要这样做而不重新排列数组元素。如何在不重新排列数组元素的情况下计算数组中的唯一数字?
我该如何做到这一点?
int numberOfElements = myArray.Distinct().Count();
非LINQ:
我在计算数组中的唯一值时遇到了问题,我需要这样做而不重新排列数组元素。如何在不重新排列数组元素的情况下计算数组中的唯一数字?
我该如何做到这一点?
int numberOfElements = myArray.Distinct().Count();
非LINQ:
如果你有.NET 3.5,你可以很容易地通过LINQ实现这一
List<int> uniqueValues = new List<int>();
for(int i = 0; i < myArray.Length; ++i)
{
if(!uniqueValues.Contains(myArray[i]))
uniqueValues.Add(myArray[i]);
}
int numberOfElements = uniqueValues.Count;
这是一个更为有效的非LINQ的实现。
var array = new int[] { 1, 2, 3, 3, 3, 4 };
// .Net 3.0 - use Dictionary<int, bool>
// .Net 1.1 - use Hashtable
var set = new HashSet<int>();
foreach (var item in array) {
if (!set.Contains(item)) set.Add(item);
}
Console.WriteLine("There are {0} distinct values. ", set.Count);
应该只计算不同的值还是应计算数组中的每个数(例如“数5包含3次”)?
第二个要求可以通过计数排序算法的启动步骤来实现。
这将是这样的:
问候
O(n)的运行时间MAX_VALUE存储器使用
boolean[] data = new boolean[maxValue];
for (int n : list) {
if (data[n]) counter++
else data[n] = true;
}
是本次作业? – 2009-03-05 05:36:20
he he kinda; P .... – jarus 2009-03-05 05:40:56
作业没什么问题......只要你不回答问题就好了。 (即,采取答案,并使*更好*)。 – Arafangion 2009-03-05 06:08:53