题目大意:给定一个有序数组,移除数组中重复的元素,保证每个元素只出现一次,并返回新数组的长度。
理解:题目要求不能开额外空间。用指针i始终指示无重复数组的最后一个元素,j指针扫描数组,找到不重复的就放在i+1的位置。
实现:
public class Solution {
public int removeDuplicates(int[] A) {
if(A == null || A.length == 0) return 0;
int len = A.length;
if(len == 1) return 1;
int res = 1;
int i = 0, j = 1;
while(j < len) {
if(A[j] != A[i]) {
res ++;
if(j > i + 1) {
A[i + 1] = A[j];
}
i ++;
}
j ++;
}
return res;
}
}