码迷,mamicode.com
首页 > 编程语言 > 详细

数组去重

时间:2018-08-16 22:29:51      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:remove   函数   img   简单   tor   hid   数组去重   src   返回   

class solution
{
public:
    int removeDuplicate(vector<int>& nums)
    {
        if(nums.empty())
            return 0;
        int index = 0;
        for(int i=0;i<nums.size();i++)
        {
            if(nums[index]!=nums[i])
                nums[++index] = nums[i];
        }
        return index+1;
    }
};

这是给出的第一种方法,发现并不好使,因为实际上是简单的前移,没有使得向量容器的实际长度发生变化,因此,改进后的算法:

技术分享图片
class solution
{
public:
    int removeDuplicate(vector<int>& nums)
    {
        if(nums.empty())
            return 0;
        int index = 0;
        for(int i=0;i<nums.size();i++)
        {
            if(nums[index]!=nums[i])
                nums[++index] = nums[i];
        }
        nums.erase(nums.begin()+index+1,nums.end());
        return index+1;
    }
};
View Code

第二种是利用现有的去重函数unique 在algorithm中,功能是将重复的内容扔到尾部,没有删除处理,返回指向非重复尾部的迭代器指针

下面是第二种方法的代码:


class Solution
{
public:
int removeDuplicates(vector<int>& nums)
{
nums.erase(unique(nums.begin(), nums.end()),nums.end());
return nums.size();
}
};


第一种方法有一定的限制,即数组事先需要经过排序,这里注意erase的用法,是从当前位置(包含)删除至尾部位置(不包含)

数组去重

标签:remove   函数   img   简单   tor   hid   数组去重   src   返回   

原文地址:https://www.cnblogs.com/jianbo1995/p/9490150.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!