永发信息网

c++如何删除一个数组中的重复元素

答案:3  悬赏:20  手机版
解决时间 2021-11-28 20:54
  • 提问者网友:别再叽里呱啦
  • 2021-11-28 02:30
c++如何删除一个数组中的重复元素
最佳答案
  • 五星知识达人网友:雪起风沙痕
  • 2021-11-28 04:05
可以使用双重循环,逐一对比元素,如有重复,则删除的方法去重。
其思路为
1、依次遍历循环中的每一个元素。
2、对于任意一个元素,依次与之前的元素进行对比,如果有重复则删除。
3、删除操作可以采用将后续元素逐个前移,达到覆盖当前元素的效果。


在此基础上可以进行一点优化,即,不需要每次删除元素均前移所有元素,而是把需要保留的元素放到"应该"放的位置即可,这样可以提高效率。
以整型数组为例,参考代码如下:
int remove_repeat(int *a, int l)//对起始地址为a,长度为l的数组进行去重,新的长度以返回值形式返回。
{
    int i,j, r=0; //i,j为循环下标,r为去重后元素总数,初始值为0
    
    for(i = 0; i < l; i ++)
    {
        for(j = 0; j < r; j ++)//检查是否重复
            if(a[j] == a[i]) break;
        if(j == r) //没有重复元素
            a[r++] = a[i]; //将当前元素放置与去重后数组的尾部,并增加去重后的总数。
    }
    
    return r; //返回新的长度。
}
全部回答
  • 1楼网友:玩世
  • 2021-11-28 05:57
准备睡了,马上随叫了,说一下大概思路:
1、双层循环便利。
2、最后循环一下,赋值给目标数组。
搞定,打完收工。如果还不理解,追问吧。少年追问看不懂
我处于初级水平
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯