根据题意已知:测试用例均为一个递增有序序列,只是有的数字在该位置重复出现而变成非严格递增(例如; 1 1 2 2 3 4 4 5 6 6),所以可以用快慢指针解题。且fast一定比slow走的快
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[0..slow] 无重复
nums[slow] = nums[fast];
}
fast++;
}
return slow + 1;
}
};