你可以使用双指针来解决这个问题。定义两个指针 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。

JavaScript 实现数组去重 - 升序排列数组原地删除重复元素

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

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