https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii/
思路:统计个数出现次数,将不同个数数字放到数组前部
int removeDuplicates(vector<int>& nums) {
if (nums.size() <= 2) {
return nums.size();
}
//left用来统计数字出现的最早idx,left_idx用来顺序存储处理后的数字个数,cnt为数字总个数
//cnt和left_idx可以简化
int left = 0, left_idx;
int cnt = 0;
for (int i = 1; i < nums.size(); i++) {
if (nums[i] != nums[left]) {
if (i - left <= 2) {
cnt += i - left;
} else {
cnt += 2;
}
for (int j = left_idx; j < cnt; j++) {
nums[j] = nums[i - 1];
}
left = i;
left_idx = cnt;
}
//处理最后一个相等字符
if (i == nums.size() - 1 && nums[left] == nums[i]) {
if (i - left + 1 <= 2) {
cnt += i - left + 1;
} else {
cnt += 2;
}
for (int j = left_idx; j < cnt; j++) {
nums[j] = nums[i];
}
}
}
return cnt;
}