瞥到了双指针,遂有了想法
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int sz=nums.size();
if(sz<=1)
return sz;
int l=0,r=1;
while(nums[l]!=nums[r]){
if(r==sz-1)
return sz;
++l,++r;
}
while(r<sz){
if(nums[l]==nums[r])
++r;
else{
++l;
nums[l]=nums[r];
}
}
return l+1;
}
};
然后看了题解
更简洁的代码
自己尝试写一下
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int t=0;
for(int i=0;i<nums.size();++i){
if(i==0||nums[i]!=nums[i-1])
nums[t++]=nums[i];
}
return t;
}
};
虽然看起来更简洁
但是
学到了!