1.Description
2.Example
3.My Code
我的办法就是记录当前最终的下标index,然后不断寻找第一个不同的数填入nums[index]即可。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int cnt = 0;
for(int i=0;i<nums.size();i++){
nums[cnt]=nums[i];
cnt++;
int j=i+1;
while(j<nums.size() && nums[j]==nums[i] ){
j++;
}
if(j>=nums.size())
return cnt;
else
i=j-1;
}
return cnt;
}
};
4.Code(先后指针)
先后指针,不需要index计数,nums[fast]和nums[fast-1]比较,slow指向待填的位置
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int n = nums.size();
if(n == 0)
return 0;
//nums[0]默认已经填了
int slow = 1,fast =1;
while(fast < n){
if(nums[fast] != nums[fast-1]){
nums[slow] = nums[fast];
slow++;
}
fast++;
}
return slow;
}
};