可以使用双指针来实现原地删除数组重复元素。定义两个指针 ij,初始时 i = 0j = 1

遍历数组,如果 nums[i]nums[j] 相等,则 j 向后移动一位;如果不相等,则将 nums[j] 的值赋给 nums[i+1],然后 ij 分别向后移动一位。

最后返回 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

注意,这里的删除重复元素是指在原地修改数组,不需要创建新的数组。如果要返回删除重复元素后的新数组,可以在算法中加上一个新的数组来保存结果。

JavaScript 实现原地删除数组重复元素并返回新长度

原文地址: https://www.cveoy.top/t/topic/qob4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录