我在接受Microsoft采访时遇到了这个问题。
给定一个随机整数数组,用C编写一个算法,该算法将删除重复的数字并返回原始数组中的唯一数字。
例如输入:{4, 8, 4, 1, 1, 2, 9} 输出:{4, 8, 1, 2, 9, ?, ?}
一个警告是预期的算法不应要求首先对数组进行排序。并且,当一个元素被删除后,以下元素也必须向前移动。无论如何,在元素向后移动的数组尾部的元素值可以忽略不计。 问题来源于stack overflow
怎么样:
void rmdup(int *array, int length) { int *current , *end = array + length - 1;
for ( current = array + 1; array < end; array++, current = array + 1 )
{
while ( current <= end )
{
if ( *current == *array )
{
*current = *end--;
}
else
{
current++;
}
}
}
} 应为O(n ^ 2)或更小。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。