【leetcode】26. 删除有序数组中的重复项(图解)

目录

  • 1. 思路(图解)
  • 2. 代码

题目链接: leetcode 26. 删除有序数组中的重复项

题目描述:
【leetcode】26. 删除有序数组中的重复项(图解)_第1张图片

注意返回的是去重后的数组长度,但是输出的是去重后的数组元素。

【leetcode】26. 删除有序数组中的重复项(图解)_第2张图片
【leetcode】26. 删除有序数组中的重复项(图解)_第3张图片

1. 思路(图解)

思路:快慢指针
1. dst作为下标,初始化为0;src作为下标,初始化为1;
2. 如果nums[dst] == nums[src], src++;
3. 如果nums[dst] != nums[src], dst++, nums[dst] = nums[src], src++;
4. 返回dst + 1就是新数组长度

【leetcode】26. 删除有序数组中的重复项(图解)_第4张图片
【leetcode】26. 删除有序数组中的重复项(图解)_第5张图片
【leetcode】26. 删除有序数组中的重复项(图解)_第6张图片
【leetcode】26. 删除有序数组中的重复项(图解)_第7张图片

2. 代码

int removeDuplicates(int* nums, int numsSize) {
    int dst = 0;
    int src = 1;
    while (src < numsSize) {
        if (nums[dst] == nums[src]) {
            src++;
        }
        else {
            ++dst;
            nums[dst] = nums[src];
            ++src;
        }
    }
    return dst + 1;
}

你可能感兴趣的:(Data,Structure,and,Algorithm,刷题,leetcode,算法)