【leetcode】26. 删除排序数组中的重复项

 仅记录自己的学习笔记。

/***
快慢指针法
 * 设置一个慢指针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;
}
原文地址:https://www.cnblogs.com/qxlxi/p/12860783.html