本文详解如何在 JavaScript 中原地删除排序数组中的重复项。要求不使用额外空间,仅用 O(1) 内存修改原数组并返回新长度。文章提供两种双指针解法,通过示例演示如何高效处理数组去重问题,适合前端开发者提升算法能力。
题目

删除排序数组中的重复项
给定一个已排序的数组,要求你在原地移除重复出现的元素,确保每个元素仅保留一次,并返回移除后数组的有效新长度。关键点在于不能使用额外的数组空间,必须直接在原数组上进行修改,且算法的时间复杂度需控制在 O(1) 的额外空间条件下完成。
示例 1:
输入数组 nums = [1,1,2],
函数应返回新的长度 2,同时原数组 nums 的前两个元素被修改为 1, 2。 请注意,你无需关心数组中超出新长度之后的元素值。
示例 2:
给定 nums = [0,0,1,1,1,2,2,3,3,4],
函数应返回新的长度 5,同时原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。 请注意,你无需关心数组中超出新长度之后的元素值。
答案
解法1.
const removeDuplicates = nums => {
let count = 0;
const n = nums.length;
for(let i = 1; i < n; i++){
if(nums[i] != nums[i-1]){
nums[i-count] = nums[i]
}else{
count++;
}
}
return n-count;
};解法2.
const removeDuplicates = nums => {
let j = 0;
const n = nums.length;
for(let i = 1; i < n; i++){
if(nums[i]!= nums[i-1]){
j++;
nums[j] = nums[i];
}
}
return j+1;
};以上就是JS算法题解数组删除重复项方法示例的详细内容,更多关于JS算法数组删除重复项的资料请关注本站其它相关文章!