好的,你说你不想要任何内置的东西,所以让我们从头开始做所有事情。
有两种方法(我知道)可以做到这一点。一个复杂度为 O(n^2),一个复杂度为 O(n + n*log(n))。第二个更快,但第一个更容易。
较慢(但更容易)的解决方案:O(n^2)
int[] iArray = {1,2,3,2,3,4,3};
List<int> unique = new List<int>(iArray.Length);
for(int i = 0; i<iArray.length; i++)
{
bool found = false;
for(int prev=0; prev<i; prev++)
{
if(iArray[prev] == iArray[i])
{
found = true;
break;
}
}
if(!found)
{
unique.Add(iArray[i]);
}
}
iArray = unique.ToArray();
for(int i=0; i<iArray.Length; i++)
{
Console.WriteLine(iArray[i]);
}
更快(但更复杂)的解决方案:O(n + n*log(n))
int[] iArray = {1,2,3,2,3,4,3};
List<int> unique = new List<int>(iArray.Length);
// Sort the array here. Use your favorite algorithm. Sorting is so widely
// covered elsewhere that I will avoid typing it here. Complexity should
// be O(n*log(n))
if( iArray.Length > 0)
{
unique.Add(iArray[0]);
}
for(int i=1; i<iArray.length; i++)
{
if(iArray[i] != iArray[i-1])
{
unique.Add(iArray[i]);
}
}
iArray = unique.ToArray();
for(int i=0; i<iArray.Length; i++)
{
Console.WriteLine(iArray[i]);
}