LeetCode.80 Remove Duplicates from Sorted Array II
索引i表示新数组的索引,原地移除
使用后面元素覆盖掉前面重复次数超过2次的元素
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
//当数组长度小于等于2时,直接返回数组长度
if(nums.size()<=2) return nums.size();
int res = -1;
int i = 1, j = i+1;
for(j; j<nums.size(); j++){
//如果nums[j]元素和nums[i-1]不等,把j元素放到i+1元素位置
if(nums[j] != nums[i-1])
nums[++i] = nums[j];
//如果相等,直接考查下一个元素
}
//i是索引位置,真实数组长度为i+1
res = i+1;
nums.resize(res);
return res;
}
};
无注释版:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size()<=2) return nums.size();
int res = -1;
int i = 1, j = i+1;
for(j; j<nums.size(); j++)
if(nums[j] != nums[i-1])
nums[++i] = nums[j];
res = i+1;
nums.resize(res);
return res;
}
};