快慢指针的做法,慢指针在后面,快指针在前面探路,找到不同的元素就让slow往前走一步。这样当fast走完时[0, slow]就是不同的元素,而slow+1就是元素个数
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.size() == 0)
return 0;
int slow = 0, fast = 0;
while (fast < nums.size())
{
if (nums[fast] != nums[slow])
{
slow++;
nums[slow] = nums[fast];
}
fast++;
}
return slow + 1;
}
};