java\c++的stl解决重复的元素
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(); } };