给定一个已排序的数组,删除重复的元素,这样每个元素只出现一次,并且返回新的数组长度。
不允许为另一个数组使用额外的空间,你必须就地以常量空间执行这个操作。
例如,
给定输入数组为 [1,1,2]
你的函数应该返回length = 2, 其前两个元素分别是1和2。它不关心你离开后的新长度。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.begin() == nums.end()) return 0;
vector<int>::iterator itor;
for (itor = nums.begin(); itor != nums.end() && itor + 1 != nums.end(); ++itor) {
while (*itor == *(itor + 1)) {
nums.erase(itor + 1);
if (itor + 1 == nums.end())
break;
}
}
return nums.size();
}
};
这里注意,迭代器中itor++和itor+1是不一样的,itor++包括了加一和赋值操作,相当于itor = itor +1,这样会改变迭代器所指的元素。