LeetCode: Remove Duplicates from Sorted Array

来源:互联网 发布:python json 字符串 编辑:程序博客网 时间:2024/06/07 21:57

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example, Given input array A = [1, 1, 2],

Your function should return length = 2, and  A is now [1, 2].


解题思路:

移除数组中的的重复的元素,只保留相应的一个,返回一个去重后的数组。分别使用两个索引,一个用于遍历数组,一个用于保存不重复数组的下标,即可在O(n)的时间复杂度内完成去重操作,空间复杂度为O(1)


代码如下:

int removeDuplicates(int A[], int n) {if (n == 0) {return 0;}int index = 0;for (int i=1; i<n; i++) {if (A[index] != A[i]) {A[++index] = A[i];}}return index + 1;}

第二种方法:

使用STL,时间复杂度也为O(n),空间复杂度为O(1)

int removeDuplicates(int A[], int n) {return distance(A, unique(A, A + n))}



阅读全文
1 0