Skip to content

力扣链接:26.删除有序数组中的重复项

难度:⭐

解题关键词:双指针

解题思路:使用快慢指针,然后往后移动,如果两个数相等,那么快指针继续往后移动一位,慢指针不动,如果不相等,那么把慢指针往后移动,把快指针的元素赋值给它,然后快指针再往后移动一位。

typescript
function removeDuplicates(nums: number[]): number {
  const len = nums.length;

  if (len === 1) return 1;

  let slow = 0;
  let fast = 1;

  while (fast < len) {
    // 有相同元素,快指针继续往后
    if (nums[slow] === nums[fast]) {
      fast++;
    } else {
      // 不相等,把快指针元素赋值到慢指针后面
      nums[++slow] = nums[fast++];
    }
  }

  return slow + 1;
}