Skip to content

26、删除有序数组中的重复项

js
;(function () {
  /**
   * 26. 删除有序数组中的重复项
   * 给你一个 【升序排列】 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,
   * 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
   *
   * 将最终结果插入 nums 的前 k 个位置后返回 k 。
   * 不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
   *
   */

  function removeDuplicates(nums: number[]): number {
    // 方法一:双指针
    const len = nums.length
    if (len === 0) return 0
    let fast = 1,
      slow = 1
    while (fast < len) {
      if (nums[fast] !== nums[fast - 1]) {
        nums[slow] = nums[fast]
        ++slow
      }
      ++fast
    }
    return slow

    // 方法二:
  }

  console.log(removeDuplicates([0, 0, 1, 1, 1, 2, 2, 3, 3, 4]))
})()