方法1:双指针,快指针遍历数组,慢指针表示新数组数组最后一个元素的下标位置
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int slow = 0, fast = 1;
while (fast < nums.size()) {
if(nums[fast] == nums[slow]) fast++;
else nums[++slow] = nums[fast];
}
return slow+1;
}
};
方法2:不断记录nums数组中出现的重复数字的个数为nums_e,然后不断把不重复的数字前移nums_e个
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int num_e = 0;
for(int i=1;i<nums.size();i++){
if(nums[i] == nums[i-1]) num_e++;
else nums[i-num_e] = nums[i];
}
return nums.size() - num_e;
}
};