比如,一个数组含有1,2,2,3,4,5,6,6,6,7这几个元素,要求,将其相同的元素全部删除,也就是得到了这样一个数组,1,2,3,4,5,6。需要时间和空间的最优化。
谁能帮忙写出这个算法?或者C++的代码。
需要最优算法,如果您帮我写出来了,麻烦发到我邮箱,87165752@qq.com,
此算法主要针对已排好序的数组! 它的时间复杂度为Tn=O(n^2) Sn=O(1); 主要的问题出在元素的移动上;如果用链表来表示数组,那么它的时间复杂度为Tn=O(n);
void DeleteSame(int r[])
{ int length=10;//数组长
int i = 0;
for(; i < 10;)
{ if(r[i]==r[i++])
{ for( int j = i + 1; j < length -i-1; j++)
r[j] = r[j++];
length--;
}
else i++;
}
}
void DeleteSame(int r[])
{ int length=10;//数组长
int i = 0;
for(; i < 10;)
{ if(r[i]==r[i++])
{ for( int j = i + 1; j < length -i-1; j++)
r[j] = r[j++];
length--;
}
else i++;
}
}
温馨提示:答案为网友推荐,仅供参考