思路
使用双指针遍历一次数组。左右指针的初始位置为0,左指针用来定位,右指针用来找元素。左指针与右指针的元素不相同的时候,左指针先自加一次,然后将右指针所指元素放在左指针指向的位置。左右指针元素相同或者不相同,右指针都需要向后移动一位。
关键词:数组 双指针
实现
自写
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int left=0,right=0,n=nums.size();
if(n==0) return 0;
while(right!=n){
if(nums[left]!=nums[right]){
nums[++left]=nums[right];
}
right++;
}
return left+1;
}
};