C++程序 从排序数组中删除重复项
给定一个已排序的数组,任务是从数组中删除重复元素。
例子:
输入: arr[] = {2, 2, 2, 2, 2}
输出: arr[] = {2}
新长度 = 1
输入: arr[] = {1, 2, 2, 3, 4, 4, 4, 5, 5}
输出: arr[] = {1, 2, 3, 4, 5}
新长度 = 5
方法1: (使用额外空间)
- 创建一个辅助数组temp []来存储唯一元素。
- 遍历输入数组,并一次将arr []的唯一元素复制到temp []。 同时跟踪唯一元素的计数。 让这个计数是 j 。
- 从temp []复制 j 个元素到arr [],并返回j
输出:
时间复杂度: O(n)
辅助空间: O(n)
方法2: (常数额外空间)
只需在方法1中维护与不同数组所维护的相同数组的单独索引即可。
输出:
时间复杂度:O(n)
辅助空间:O(1)