元素前移法(快慢指针)
核心思想: 由于首元素(下标0)必为不重复项,故从下标1开始,依次将有序数组中的不重复项添加到数组中,并利用count统计数组中不重复元素的个数,即删除后数组的新长度。简单地说,就是把数组中不重复的元素依次前移到数组的开始位置。
class Solution {
public int removeDuplicates(int[] nums) {
if(nums.length == 0)//特判
return 0;
int cur = nums[0];//当前待比较元素
int count = 1;//数组中不重复元素的个数
for(int i = 1; i < nums.length; i++){
if(nums[i] != cur){
nums[count++] = nums[i];//从下标1开始将不重复元素添加到数组中
cur = nums[i];//更新待比较元素
}
}
return count;
}
}