首页 > 解决方案 > 我试图将数字放入数组而不放入重复项

问题描述

我的代码返回 0 作为长度。从数组中排除重复项后,它应该返回 5。我认为我在我的代码中遗漏了一些我没有想到的东西。有人可以快速查看它并告诉我缺少什么吗?我希望我的代码用于解决方案,而不是全新的。谢谢

问题:给定一个排序数组 nums,就地删除重复项,使每个元素只出现一次并返回新长度。

不要为另一个数组分配额外的空间,您必须通过使用 O(1) 额外内存就地修改输入数组来做到这一点。

const numbers = [0,0,1,1,1,2,2,3,3,4]

const removeDuplicates = (nums) => {
    nums.sort()
    const newArr = []

    //or just count how many numbers there are excluding their duplicates
    for(let i = 0; i < nums.length; i++){
        for(let j = 0; j < nums.length; j++){
            if(!nums[i] === nums[j]){
                 newArr.push(nums[i]);
            }
        }
    }
    console.log(newArr)
    return newArr.length
};

标签: javascriptarrays

解决方案


您的代码中的问题是这一行:

            if(!nums[i] === nums[j]){

您可能打算这样做:

            if(nums[i] !== nums[j]){

也就是说,嵌套 for 循环的逻辑有问题。这可能是您的意图:

const numbers = [0,0,1,1,1,2,2,3,3,4]

const removeDuplicates = (nums) => {
    nums.sort((a, b) => a - b);
    const newArr = [];

    let prev = -Infinity;
    for (let i=0; i<nums.length; i++) {
        if (nums[i] === prev)
            continue;
        newArr.push(nums[i]);
        prev = nums[i];
    }

    console.log(newArr);
    return newArr.length;
};

removeDuplicates(numbers);


推荐阅读