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

JavaScript函数either404逻辑错误排查:修正相邻0/4判断逻辑

修正either404函数逻辑:解决同时存在相邻0对和4对时错误返回true的问题

问题背景

给定整数数组numbers,需要实现函数either404:

  • 当数组仅存在相邻0对(0,0)或相邻4对(4,4)其中一种情况时,返回true
  • 两种情况同时存在,或者都不存在时,返回false

当前实现传入数组[0,0,3,6,4,4]时错误返回true,正确结果应为false,需要修正函数逻辑。

问题原因分析

原实现大概率只做了「存在0对 或 存在4对」的判断,没有排除两种情况同时存在的场景,导致符合“同时存在”的输入错误返回true。

修正后的代码实现

以JavaScript为例,修正后的函数如下:

function either404(numbers) {
  let hasZeroPair = false;
  let hasFourPair = false;

  for (let i = 1; i < numbers.length; i++) {
    const prev = numbers[i-1];
    const curr = numbers[i];
    if (prev === 0 && curr === 0) {
      hasZeroPair = true;
    } else if (prev === 4 && curr === 4) {
      hasFourPair = true;
    }
    // 提前终止:两个标记都为true时无需继续遍历
    if (hasZeroPair && hasFourPair) {
      break;
    }
  }

  // 异或逻辑:仅当其中一种情况存在时返回true
  return hasZeroPair !== hasFourPair;
}

逻辑说明

  • 初始化两个布尔变量hasZeroPair和hasFourPair,分别标记数组中是否存在相邻0对和相邻4对
  • 遍历数组(从索引1开始),逐一检查当前元素与前一个元素的组合:
    • 若为0,0,将hasZeroPair设为true
    • 若为4,4,将hasFourPair设为true
    • 当两个标记都变为true时,可提前终止循环(已满足同时存在的条件,无需继续遍历)
  • 最后返回hasZeroPair !== hasFourPair:
    • 只有其中一个标记为true时,返回true(符合“仅存在一种”的要求)
    • 两个标记都为true或都为false时,返回false

测试验证

  • 输入[0,0,3,6,4,4] → 返回false(符合预期)
  • 输入[0,0,3,6] → 返回true(仅存在0对)
  • 输入[3,4,4,6] → 返回true(仅存在4对)
  • 输入[1,2,3] → 返回false(两种对都不存在)
  • 输入[0,0,4,0,4,4] → 返回false(同时存在两种对)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:52:24