LeetCode: Remove Duplicates from Sorted Array

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))
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章