可以使用双指针来实现。定义两个指针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

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

js实现 给你一个 升序排列 的数组 nums 请你 原地 删除重复出现的元素使每个元素 只出现一次 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

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

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