gpt4 book ai didi

javascript - 排序数组中缺少整数

转载 作者:行者123 更新时间:2023-12-05 00:36:23 24 4
gpt4 key购买 nike

  • 我有一个排序数字数组被传递到我的函数
  • 我想返回numbers的号码我失踪了

  • 示例:
    我传递的数组是 [1,5,6,9]
    我缺少的数字是 2,3,4,7,8
    计数器应该是 5
    我正在尝试做的事情:
    不使用任何内置插件。
    虽然我列表中的下一个数字不是我列表中已经存在的下一个数字,但我会加一。
    function missing(numbers){
    counter = 0;
    let j = 1;
    for(let i = 0; i<numbers.length; i++){
    while(numbers[i+1] != numbers[i]+j){
    j+=1;
    counter+=1;
    console.log("missing "+ numbers[i]+j)
    }
    }
    return counter;
    }

    最佳答案

    我建议使用 Set包含输入数组中的所有数字,然后生成与该数组对应的所有可能数字的范围数组。
    我们首先获取输入数组的最小值和最大值,然后生成从最小值到最大值的范围。
    然后我们使用 Array.filter()删除我们原始数组中范围数组中的所有项目(在集合中)

    function getMissingNumbers(arr) {
    const [min,max] = [Math.min(...arr), Math.max(...arr)];
    const range = Array.from({ length: (max - min + 1)}, (v,k) => k + min);
    const nSet = new Set(arr);
    return range.filter(n => !nSet.has(n));
    }

    console.log(getMissingNumbers([1,5,6,9]))
    console.log(getMissingNumbers([1,5]))
    console.log(getMissingNumbers([2,3,4,5,8,9]))
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    还有一个稍微简单的版本(假设数组已排序):

    function getMissingNumbers(arr) {
    let s = new Set(arr);
    let range = Array.from({ length: (arr[arr.length-1] - arr[0])}, (v,k) => k + arr[0]);
    return range.filter(n => !s.has(n));
    }

    console.log(getMissingNumbers([1,5,6,9]))
    console.log(getMissingNumbers([1,5]))
    console.log(getMissingNumbers([2,3,4,5,8,9]))
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    关于javascript - 排序数组中缺少整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69939519/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com