题目描述
- 给你一个 升序排列 的数组
nums ,请你 原地删除 重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
- 考虑
nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:
- 更改数组
nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
- 返回
k 。
解题思路
- 双指针法(快慢指针)
- 注意题目升序排列(
保证重复元素都是挨着的)、原地删除(使用双指针的判断标志)
快指针遍历元素
慢指针记录非重复元素
解题代码(JavaScript)
var removeDuplicates = function (nums) {
let len = nums.length;
let slow = 0;
let fast = 0;
while (fast < len) {
if (nums[fast] === nums[slow]) {
fast++;
} else {
slow++;
nums[slow] = nums[fast];
fast++;
}
}
return slow + 1;
};