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 nums = [1,1,2]
,
Your function should return length = 2
, with the first two elements of nums being 1
and 2
respectively.
It doesn't matter what you leave beyond the new length.
因为只已经排序了的,遇到当前位置元素和前面一个位置相同,直接覆盖写到数组的前面,已经排序保证覆盖不会漏掉元素。
public int removeDuplicates(int A[], int n) {
if(n < 2) return n;
int cnt = 1;
for(int i = 1; i < n; ++i)
if(A[i] != A[i-1]) A[cnt++] = A[i];
return cnt;
}