给定一个已排序的数组,请删除就位的重复项,以使每个元素仅出现一次并返回新的长度。不要为另一个数组分配额外的空间,必须使用恒定的内存来就位。
例如,给定输入数组A = [1,1,2],您的函数应返回length = 2,而A现在为[1,2]。
分析
问题很简单。它返回具有唯一元素的数组的长度,但是原始数组也需要更改。此问题类似于从排序数组II中删除重复项。
Java解决方案
public static int removeDuplicates(int[] A) {
if (A.length < 2)
return A.length;
int j = 0;
int i = 1;
while (i < A.length) {
if (A[i] != A[j]) {
j++;
A[j] = A[i];
}
i++;
}
return j + 1;
}
请注意,我们只关心原始数组的第一个唯一部分。因此,如果输入数组为{1,2,2,3,3},可以将数组更改为{1,2,3,3,3}。