力扣 26. 删除有序数组中的重复项

69 阅读1分钟

image.png

image.png

经典的双指针法删除重复元素

设两个指针,分别是慢指针left和快指针right。当遇到重复元素,慢指针停下来,快指针继续遍历。当遇到不重复的元素,把慢指针的下一个元素的值设为快指针指向的值,然后快指针自增1。

class Solution {
    public int removeDuplicates(int[] nums) {
        int left=0, right=1;
        while(left<nums.length && right<nums.length){
            if(nums[left]==nums[right])right++;
            else nums[++left]=nums[right++];
        }
        return left+1;
    }
}