【数据结构练习题】删除有序数组中的重复项

图片来源于网络

✨博客主页:小钱编程成长记
博客专栏:数据结构练习题
相关博文:消失的数字 — 三种解法超详解

删除有序数组中的重复项

  • 1.题目
  • 2. 解题思路
  • 3. 具体代码
  • 总结

1.题目

【数据结构练习题】删除有序数组中的重复项_第1张图片
【数据结构练习题】删除有序数组中的重复项_第2张图片
力扣链接

2. 解题思路

1.非严格递增的数组:两个相邻元素相等或递增的数组
2. 因为要在原地删除重复的元素,所以不能再创建数组,以数组为跳板解决为题。
3. 我们可以用类似双指针的方法,创建两个下标src和dest,通过前后元素的对比,若不同,则将dest位置上的元素覆盖掉src后一个的重复的元素,++dest;相同时,++dest
4. 举例,如图:

》src 和 dest上的元素相同,++dest
【数据结构练习题】删除有序数组中的重复项_第3张图片

》不同时将dest位置上的元素覆盖掉src后一个的重复的元素,++dest
【数据结构练习题】删除有序数组中的重复项_第4张图片

【数据结构练习题】删除有序数组中的重复项_第5张图片
》相同时,++dest

【数据结构练习题】删除有序数组中的重复项_第6张图片》不同时将dest位置上的元素覆盖掉src后一个的重复的元素,++dest

【数据结构练习题】删除有序数组中的重复项_第7张图片

3. 具体代码

int removeDuplicates(int* nums, int numsSize){
    int dest = 1;//下标
    int src = 0;
    while (dest < numsSize) // 因为 MAX_dest + 1 == numsSize
    {
        if (nums[src] != nums[dest])
        {
            // ++src;
            // nums[src] = nums[dest];
            // ++dest;
            nums[++src] = nums[dest++];
        }
        else
        {
            ++dest;
        }
    }
    return src + 1;

}

总结

本篇文章我们解决了力扣上删除有序数组中的重复项这道题,感谢大家的阅读!大家一起进步!

点赞收藏加关注,C语言学习不迷路!
图片来源于网络

你可能感兴趣的:(数据结构练习题,数据结构,学习,c语言,软件工程,学习方法,开发语言)