✨博客主页:小钱编程成长记
博客专栏:数据结构练习题
相关博文:消失的数字 — 三种解法超详解
删除有序数组中的重复项
- 1.题目
- 2. 解题思路
- 3. 具体代码
- 总结
1.题目
力扣链接
2. 解题思路
1.非严格递增的数组:两个相邻元素相等或递增的数组
2. 因为要在原地删除重复的元素,所以不能再创建数组,以数组为跳板解决为题。
3. 我们可以用类似双指针的方法,创建两个下标src和dest,通过前后元素的对比,若不同,则将dest位置上的元素覆盖掉src后一个的重复的元素,++dest;相同时,++dest
4. 举例,如图:》src 和 dest上的元素相同,++dest
》不同时将dest位置上的元素覆盖掉src后一个的重复的元素,++dest
》相同时,++dest
》不同时将dest位置上的元素覆盖掉src后一个的重复的元素,++dest
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语言学习不迷路!