【发布时间】:2011-01-04 13:38:35
【问题描述】:
我需要从数组中删除重复的条目,但不能使用任何新的数据结构,并且同一个数组应该只返回不同的元素。例如,如果我的数组是1,3,3,3,5,55,67,1,那么结果应该是1,3,5,55,67。
我相信我已经解决了这个问题,但我需要你对它是否是一个好的算法或者我是否需要改变一些东西提出意见。
public void DeleteDuplicate(int[] array)
{
int l = 0;
int newPosition = array.Length -1;
for (int i = 0; i < array.Length; i++)
{
for (int j = i + 1; j < array.Length-l; j++)
{
if (array[i] == array[j])
{
int temp = array[j];
array[j] = array[newPosition];
array[newPosition] = temp;
newPosition--;
l++;
}
}
}
Array.Resize(ref array, array.Length - l);
}
【问题讨论】:
-
是否允许以其他方式改变数组(例如重新排序元素)?从您的示例中不清楚。如果答案是肯定的,那么你可以做得更快。
标签: c# arrays algorithm data-structures