js实现 给你一个 升序排列 的数组 nums 请你 原地 删除重复出现的元素使每个元素 只出现一次 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
可以使用双指针来实现。定义两个指针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/iHHW 著作权归作者所有。请勿转载和采集!