思路:
直接双指针即可,也称快慢指针吧。
慢指针用来定位应该被替换的元素,也就是数组前几个元素,快指针用于发现和慢指针所指的元素不同的元素,当发现后就替换掉慢指针所指的元素即可。
代码:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int slow=0,n=nums.size();
if(n==0) return 0;
int res=1;
for(int i=0;i<n;++i){
if(nums[i]==nums[slow]) continue;
res++;
slow=i;
nums[res-1]=nums[i];
}
return res;
}
};
优化:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int slow=1,n=nums.size();
if(n==0) return 0;
for(int fast=1;fast<n;fast++){
if(nums[fast]!=nums[fast-1]){
nums[slow++]=nums[fast];
}
}
return slow;
}
};
``
26. Remove Duplicates from Sorted Array
原文:https://www.cnblogs.com/Mrsdwang/p/14674140.html