一、问题描述
Description: Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.
For example: Given input array nums =
[1,1,2]
:Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn’t matter what you leave beyond the new length.
Note: Do not allocate extra space for another array, you must do this in place with constant memory.
给一个有序数组,原地移除重复的元素,并返回新数组的长度。
注意:只能原地工作,不能使用额外的数组。
二、解题报告
由于输入的是有序数组,在遍历过程中,我们只需要判断是否与前面的重复即可。
代码:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.empty())
return 0;
int count = 1;
int pre = nums[0];
vector<int>::iterator beg = nums.begin();
for(++beg; beg!=nums.end(); ) { // 从第二个开始
if(*beg == pre) // 重复,移除
beg = nums.erase(beg);
else // 不重复,更新pre
{
pre = *beg;
++beg;
}
}
return nums.size();
}
};
LeetCode答案源代码:https://github.com/SongLee24/LeetCode