力扣链接:80.删除有序数组中的重复项 II
难度:⭐⭐
解题关键词:使用双指针从前往后遍历,如果第一次遇到重复的元素,继续赋值到慢指针,同时将标记位置为 true,下次再遇到,就跳过。
解题思路:
typescript
function removeDuplicates(nums: number[]): number {
const len = nums.length;
if (len === 1) return 1;
let slow = 0;
let fast = 1;
let repeatFlag = false;
while (fast < len) {
if (nums[slow] === nums[fast]) {
// 如果第一次重复
if (!repeatFlag) {
repeatFlag = true;
nums[++slow] = nums[fast];
}
fast++;
} else {
repeatFlag = false;
nums[++slow] = nums[fast++];
}
}
return slow + 1;
}