C语言|C语言 详解如何删除有序数组中的重复项

目录

  • 删除有序数组中的重复项Ⅰ
    • a.思路
    • b.图解
    • c.代码
    • d.思考
  • 删除有序数组中的重复项Ⅱ
    • a.思路
    • b.图解
    • c.代码
    • d.思考

删除有序数组中的重复项Ⅰ C语言|C语言 详解如何删除有序数组中的重复项
文章图片

C语言|C语言 详解如何删除有序数组中的重复项
文章图片



a.思路
?定义变量 int dest=0,cur=1,nums[cur]与nums[dest]逐一比较。
?nums[cur]!=nums[dest],将nums[cur]放入dest下一个位置,更新dest。
?nums[cur]!=nums[dest],cur移动。
?cur==numsSize,结束。返回dest+1。


b.图解
C语言|C语言 详解如何删除有序数组中的重复项
文章图片



c.代码
int removeDuplicates(int* nums, int numsSize){if(numsSize==0){return 0; }int dest=0; int cur=1; nums[dest]=nums[0]; //从cur==1cur


d.思考
?如果给你一个无序的数组,去除重复的元素,该如何设计程序?

删除有序数组中的重复项Ⅱ C语言|C语言 详解如何删除有序数组中的重复项
文章图片

C语言|C语言 详解如何删除有序数组中的重复项
文章图片

a.思路
?定义变量 int dest=0,cur=1,flag=1(表示0到dest,nums[dest]只出现过一次)。
?比较nums[cur]与nums[dest]。
?nums[cur]!=nums[dest],将nums[cur]放入dest下一个位置,++dest,更新flag(flag=1)。
?nums[cur]==nums[dest],如果dest所对应的flag为1,可将nums[cur]放入dest下一个位置,++dest, ++flag。如果dest所对应的flag为2,只移动cur.。
b.图解
C语言|C语言 详解如何删除有序数组中的重复项
文章图片

c.代码
int removeDuplicates(int* nums, int numsSize){int dest=0; int cur=1; int flag=1; nums[dest]=nums[0]; //从cur==1到cur
d.思考
?如果给定一个有序数组,删除重复出现的元素,使每个元素最多出现k次 ,返回删除后数组的新长度,该如何设计程序?(k为常数)
今天的算法题就分享到这里了,博主也会在后期更新更加优质的博文,如果对你有帮助的话,可以给个关注,顺便给个赞。
【C语言|C语言 详解如何删除有序数组中的重复项】到此这篇关于C语言 详解如何删除有序数组中的重复项的文章就介绍到这了,更多相关C语言 有序数组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读