标签: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; } };
第二种是利用现有的去重函数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