删除数组中的重复元素
思想
双指针/快慢指针
[ol]
[/ol]
p 指针是慢指针,q 指针是快指针,当 p 和 q 指向的元素相同的时候,q 指针继续向后移动,直到元素不相等,然后将 q 指针指向的元素复制给 p 的下一个元素(之所以是下一个,q 一直在向后移动,注意向后移动的前提是元素相同,那么就是覆盖掉相同的元素),同时 p 指针向后移动一个位置。
关键点
p 和 q 之间应该隔一个元素,
循环
便利数组,用 while 循环
code
class Solution {
public int removeDuplicates(int[] nums) {
int p = 0;
int q = 1;
while(q 1){
nums[p+1] = nums[q];
}
p++;
}
q++;
}
return p+1;
}
}
p+1
p 是从 0 开始的,所以要返回 p+1 才是新数组的长度