You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何找出1到N的数组中缺失的数字?附示例与实现代码

找出1..N数组中缺失数字的实现方案

如果需要从1到N的数组里找出缺失的那个数字,用排序对比的方法就很直观,逻辑简单也好理解。比如给定示例数组:let numArr = [2,4,6,8,3,5,1,9,10];,其中缺失的数字是7,具体实现代码如下:

let numArr = [2,4,6,8,3,5,1,9,10];
// 对数组进行升序排序,让元素按数字顺序排列
numArr.sort(function(a,b){
    return a-b;
});
// 生成包含1到10的完整序列,作为参照标准
let newNumArr = [];
for(let i=1;i<=10;i++){
    newNumArr.push(i);
}
// 逐个对比两个数组,找到第一个不匹配的元素就是缺失值
for(let i=0;i<newNumArr.length;i++){
    if(newNumArr[i] !== numArr[i]){
        console.log('The missing num is:'+newNumArr[i]); // 输出结果:The missing num is:7
        break;
    }
}

步骤拆解:

  • 排序原数组:这里要注意给sort传入a-b的比较函数,因为默认的排序是按字符串规则来的,会导致数字排序出错,升序排序后原数组就接近完整序列的结构了。
  • 生成完整序列:创建一个包含1到目标最大值(这里是10)的数组,作为我们的“完美参照组”。
  • 对比找差异:遍历两个数组的对应位置,第一个不相等的位置,newNumArr里的元素就是原数组缺失的数字,找到后及时终止循环还能提升效率。

内容的提问来源于stack exchange,提问作者Dangur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:52:29