删除排序数组中的重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。

function removeDuplicates(nums) {
    let obj = {}
    for(let i = nums.length-1;i > -1;i-- ){
        let item = nums[i]
        if(obj[item]){
            obj[item] += 1
            if(obj[item] > 2){
                nums.splice(i,1)
            }
        }else{
            obj[item] = 1
        }
    }
    return nums.length
}

 

/**
 * 删除有序数组中的重复项
 */
const removeDuplicates = (arr = [1,2,2,2,3,3,4,5,5,5,6,7,8,8,8]) => {
    let slow = 0, fast = 0;
    while(fast < arr.length){
        if(arr[slow] !== arr[fast]){
            slow++
            arr[slow] = arr[fast]
        }
        fast++
    }
    return arr.slice(0, slow + 1)
}

  

posted @ 2020-06-24 18:13  671_MrSix  阅读(135)  评论(0编辑  收藏  举报