思路:一开始一直在想怎么删除数组中的元素把开销降到最低,后来才看到题目要求“不需考虑超出新长度后的元素”。这样就没必要做数组删除了。
public int removeDuplicates(int[] nums) {
if(nums.length<3)
return nums.length;
int pos = 2;
for (int i=2;i<nums.length;i++){
if(nums[i]!=nums[pos-2]){
nums[pos] = nums[i];
pos++;
}
}
return pos;
}
tip:这里一开始写成了i-2是有问题的,相比较的应该是快指针和慢指针的前两位。