Skip to content
On this page

80. 删除有序数组中的重复项 II

原题链接:LeetCode 80. 删除有序数组中的重复项 II

题目描述

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以**「引用」**方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

5

示例 2:

7

提示:

1 <= nums.length <= 3 * 104
-104 <= nums[i] <= 104
- `nums` 已按升序排列

难度: Medium


题解代码

javascript
/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function (nums) {
  let slow = 0,
    fast = 2;
  while (fast < nums.length) {
    if (nums[slow] !== nums[fast]) {
      nums[slow + 2] = nums[fast];
      slow++;
    }
    fast++;
  }
  return slow + 2;
};

技术文档集合