开发者社区> 问答> 正文

算法:从数组中删除重复整数的有效方法

我在接受Microsoft采访时遇到了这个问题。

给定一个随机整数数组,用C编写一个算法,该算法将删除重复的数字并返回原始数组中的唯一数字。

例如输入:{4, 8, 4, 1, 1, 2, 9} 输出:{4, 8, 1, 2, 9, ?, ?}

一个警告是预期的算法不应要求首先对数组进行排序。并且,当一个元素被删除后,以下元素也必须向前移动。无论如何,在元素向后移动的数组尾部的元素值可以忽略不计。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 13:39:38 517 0
1 条回答
写回答
取消 提交回答
  • 怎么样:

    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)或更小。

    2020-02-08 13:39:49
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载