维护两个指针i和j,i是慢指针,j是快指针,j扫描整个数组,i维护合法答案的最后一个位置。第0个元素一定是答案第一个位置。
后面一个元素是否合法取绝于nums[i]是否等于nums[j]答案,如果不等于,往后加入,答案
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size() == 0) return 0;
int i, j;
for(i = 0, j = 0; j < nums.size(); j++){
if(nums[i] != nums[j]){
nums[++i] = nums[j];
}
}
return i+1;
}
};