JS算法题解:原地删除排序数组重复项
作者:纸飞机时间:2026-10-30 21:40:45浏览:395
本文详解如何在 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算法数组删除重复项的资料请关注本站其它相关文章!
作者最新文章
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
