26. Remove Duplicates from Sorted Array

193 阅读1分钟

26. Remove Duplicates from Sorted Array

前提是在 已经排序好的数组,需要在原数组做替换操作 in-place

解题思路

  1. 排序好的数组,无非前后两项相等或不相等
  2. 首先排除空数组,直接返回 0
  3. 那么有数据的数组,最少会有不重复元素的数量为 count = 1
  4. 为了对比前后项设置 i = 1开始遍历数组
  5. 当前后项相等时,不计入不重复的count数量, 仅做 i = i + 1开始对比下一项
  6. 当前后项不相等时,首先将count指向的重复项的位置替换掉 nums[count] = nums[i],同时计入 count = count + 1
  7. 最后返回统计好的不重复元素的数量 count

代码

var removeDuplicates = function(nums) {
    const len = nums.length;
    if (len === 0) {
        return 0;
    }
    let i = 1, count = 1;
    while (i < len) {
        if (nums[i] !== nums[i - 1]) {
            nums[count] = nums[i];
            count = count  + 1
        }
        i = i + 1
    }
    return count;
};