java:
类似于c++的stl的unique的具体实现
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length == 0) return 0;
int i = 0;
for (int j = 1; j < nums.length; j++) {
if (nums[j] != nums[i]) {
i++;
nums[i] = nums[j]; //相当与在把不重复往前面移动
//如果在这里对nums【i】进行收集则就实现了remove的功能
}
}
return i + 1;
}
}
原地删除重复的元素:
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int i=0;
for(int j=0;j<nums.size();++j)
if(nums[j]!=val)
{
nums[i]=nums[j];
i++;
}
return i;
}
};
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
nums.erase(unique(nums.begin(),nums.end()),nums.end());
return nums.size();
}
};