仅记录自己的学习笔记。
/***
快慢指针法
* 设置一个慢指针i 一个快指针 随着快指针
* 思路 当array[i]==array[j] 说明相等 直接j++ 跳过去
* array[i]!=array[j] i++ 将array[i] = array[j]; 填补过去
* 这个时候 会有两种情况出现 一种就是1,2,3,4这样 此时因为前后值不相等 所以直接i++ i和j的值相等
* 但是对于1,1,2这种情况 由于array[0]==array[1] 所以j++ j=2 下一次比较array[0]!=array[2]
* i++ array[1]=array[2] 就填补了第二个1的位置。
* @param nums
* @return
*/
public int removeDuplicates(int[] nums) {
if (nums.length == 0){
return 0;
}
int i = 0;
for (int j = 1; j < nums.length ; j++) {
if (nums[i]!=nums[j]){
i++;//慢指针
nums[i] = nums[j];
}
//不相等
}
return i+1;
}