2018-5-9 删除重复项x

我的解法:循环检测重复的数字,如果相同删除,同时循环位置减一

 int removeDuplicates(vector<int>& c) {
       if(!c.size()) return ;    
        for(int i=0;i<c.size()-1;i++){                
                if(c[i]==c[i+1]){
                    c.erase(c.begin()+i);
                      i--;          
                }
            }
        return c.size();

    }

解法一:使用unique函数

int removeDuplicates(vector<int>& nums) {

nums.erase(std::unique(nums.begin(),nums.end()),nums.end());

return nums.size();

}

unique()是C++标准库函数里面的函数,其功能是去除相邻的重复元素(只保留一个),所以使用前需要对数组进行排序

unique的作用是“去掉”容器中相邻元素的重复元素,它实质上是一个伪去除,它会把重复的元素添加到容器末尾,而返回值是去重之后的尾地址(是地址!!)

解法二:return 语句写的不错,nums 不应该resize一下吗?

int removeDuplicates(vector<int>& nums) {

int i = 0; int t = 0;

while(++t < nums.size())

{

if (nums[t] != nums[i])

{

++i;

if(i != t)

nums[i] = nums[t];

} }

return i + 1 <= nums.size() ? i + 1 : 0;

}

猜你喜欢

转载自blog.csdn.net/a1111h/article/details/80250895
今日推荐