JavaScript 实现原地删除数组重复元素并返回新长度
可以使用双指针来实现原地删除数组重复元素。定义两个指针 i 和 j,初始时 i = 0,j = 1。
遍历数组,如果 nums[i] 和 nums[j] 相等,则 j 向后移动一位;如果不相等,则将 nums[j] 的值赋给 nums[i+1],然后 i 和 j 分别向后移动一位。
最后返回 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];
const length = removeDuplicates(nums);
console.log(length); // 输出: 5
注意,这里的删除重复元素是指在原地修改数组,不需要创建新的数组。如果要返回删除重复元素后的新数组,可以在算法中加上一个新的数组来保存结果。
原文地址: https://www.cveoy.top/t/topic/qob4 著作权归作者所有。请勿转载和采集!