Skip to content

力扣链接: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;
}