描述
给定一个排序数组,在原数组中“删除”重复出现的数字,使得每个元素只出现一次,并且返回“新”数组的长度。
不要使用额外的数组空间,必须在不使用额外空间的条件下原地完成。
样例
样例 1:
输入: []
输出: 0
样例 2:
输入: [1,1,2]
输出: 2
解释: 数字只出现一次的数组为: [1,2]
分析
定义两个索引,一前一后,后面的一直递增和前面的比较。相同就++,不通就将前一个索引的下一个值覆盖,如图:
AC代码
public int removeDuplicates(int[] nums) {
// write your code here
int i = 0, j = i + 1, l = nums.length;
if (l == 0) {
return l;
} else {
for (; j < l; j++) {
if (nums[i] != nums[j]) {
nums[++i] = nums[j];
}
}
return i + 1;
}
}