数组去重算法是一种通过遍历数组,将重复元素删除或替换为不重复的元素的方法。常见的数组去重算法有以下几种:
-
使用Set:将数组元素逐个添加到Set数据结构中,Set会自动去除重复元素。然后再将Set转化为数组。
优点:简单、高效,时间复杂度为O(n);
缺点:需要额外的空间存储Set,空间复杂度为O(n),并且可能改变元素的相对顺序。 -
使用HashMap:将数组元素作为Key,出现次数作为Value,遍历数组时统计每个元素的出现次数。然后再从HashMap中选择频率为1的元素,组成新的数组。
优点:简单、高效,时间复杂度为O(n);
缺点:需要额外的空间存储HashMap,空间复杂度为O(n),并且可能改变元素的相对顺序。 -
使用双指针:通过双指针,将非重复的元素放到数组的前面,然后截断数组。最后返回截断后的数组。
优点:不需要额外的空间存储,空间复杂度为O(1),且保持元素的相对顺序不变;
缺点:需要对数组进行修改,可能改变原数组的顺序。
以下是使用C语言实现双指针去重算法的示例代码:
#include <stdio.h>