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

JavaScript实现数组缺失最小正整数遇问题,求排查逻辑错误

找出序列中缺失的最小正整数:代码错误分析

你的实现代码

A = A.filter(a => a > 0).sort()

if (A.length === 0) {
  return 1
}

if (A.length === 1) {
  return A[0] + 1
}

for (let i = 0; i < A.length; i++) {
  let curr = A[i]
  let next = A[i + 1]

  if (curr !== next && (curr + 1) !== next) {
    return curr + 1
  }
}

核心逻辑错误分析

  • 遗漏了对最小正整数1的检查
    比如输入[2,3,4],过滤排序后为[2,3,4]。你的代码会遍历所有元素,认为相邻元素连续,最终返回5,但正确答案是1——1是最小的正整数且不在序列中,你的逻辑直接从数组首元素开始判断连续性,完全跳过了这个最关键的起始场景。

  • 单元素数组处理逻辑错误
    当输入是[2]时,代码返回3,但正确答案是1;只有输入是[1]时返回2才正确。你的单元素判断直接返回元素+1,没有考虑“元素本身大于1”的情况,这会导致大量基础测试用例失败。

  • 循环边界判断存在漏洞
    遍历到数组最后一个元素时,next为undefined,此时curr !== next和curr+1 !== next都会成立,代码会返回curr+1。这个逻辑在[1,2,3]时正确(返回4),但在[2,3,4]时会错误返回5,本质还是没先检查1是否存在。

额外性能问题

代码使用了sort()方法,时间复杂度为O(n log n),而该问题可以通过O(n)时间复杂度的解法实现,这也是得分低的原因之一,但核心扣分点还是上述逻辑漏洞。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:47:35