[leetCode]26. 删除排序数组中的重复项

在这里插入图片描述

解法 双指针法

i为慢指针,j为快指针,一开始i指向第一个数组元素,j指向第2个数组元素,如果ij指向的元素相等就移动j指针跳过相同元素,如果跳过重复元素结束(nums[j]!=nums[i])就令i+1指向的元素等于j指向的元素。最后返回数组的长度i+1

class Solution {
    public int removeDuplicates(int[] nums) {
        int i = 0;//慢指针
        //j为快指针,用于跳过重复项
        for(int j = 1; j < nums.length; j++){
            if(nums[j]!=nums[i]){//跳过重复项结束
                nums[++i] = nums[j];//对i指针后一个位置赋值
            }
        }
        return i+1;
    }
}
posted @ 2020-06-20 13:05  消灭猕猴桃  阅读(51)  评论(0编辑  收藏  举报