JavaScript 实现数组去重 - 升序排列数组原地删除重复元素
你可以使用双指针来解决这个问题。定义两个指针 i 和 j,初始时都指向数组的第一个元素。
然后,开始遍历数组。如果 nums[i] 等于 nums[j],说明有重复的元素,就将 j 后移一位。如果 nums[i] 不等于 nums[j],说明找到了一个不重复的元素,将其复制到 nums[i+1] 的位置,并将 i 和 j 都后移一位。
最后,返回 i+1,即为删除重复元素后的新数组的长度。同时,你也可以通过输出数组的前 i+1 个元素来查看删除重复元素后的结果。
以下是使用 JavaScript 实现的代码:
function removeDuplicates(nums) {
if (nums.length === 0) {
return 0;
}
let i = 0;
for (let j = 1; j < nums.length; j++) {
if (nums[i] !== nums[j]) {
nums[i+1] = nums[j];
i++;
}
}
return i+1;
}
const nums = [1, 1, 2, 2, 3, 4, 5, 5, 5];
const length = removeDuplicates(nums);
console.log(length); // 输出 5
console.log(nums.slice(0, length)); // 输出 [1, 2, 3, 4, 5]
以上代码中,输入的数组为 [1, 1, 2, 2, 3, 4, 5, 5, 5],经过删除重复元素后得到的新数组为 [1, 2, 3, 4, 5],并且新数组的长度为 5。
原文地址: https://www.cveoy.top/t/topic/qoca 著作权归作者所有。请勿转载和采集!