26.删除有序数组中的重复项
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
auto it = nums.begin();
for(int j = 1;j < nums.size();)
{
if(*it == nums[j])
{
j++;
}
else
{
*(it + 1) = nums[j];
it++;
}
}
nums.erase(it + 1,nums.end());
return nums.size();
}
};
思路:使用两个指向容器中数据的指针或迭代器(假设为A和B)。一个在容器的起始位置,一个在起始位置的后一个位置,判断B所指向的数据是否是重复的,是则往后移,直到碰到不重复的将其放在A后面的一个位置,A向后移,直到B移动到容器总最后一个位置为止。因为容器中重复的部分被B跳过,之后又被不重复的部分代替,最后将A到容器的末尾中间的数据删除,得到一个没有重复数据的容器。