1. 这种题目一眼就是快慢指针问题, 原地修改数组.
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
//边界情况.
if(nums.size()<=1) return nums.size();
//定义快慢指针.
int slow=0, fast=0;
while(fast<nums.size()) {
//只有当fast值和slow值不相同时,
//才需要slow++,并且赋值fast到slow上.
if(nums[fast]!=nums[slow]) {
slow++;
nums[slow] = nums[fast];
}
//fast一直移动,直到数组边界.
fast++;
}
//slow+1为返回的长度.
return slow+1;
}
};