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

JS数组奇偶交替检查问题求助:特定用例未正确处理

奇偶交替数组检查问题修复

问题描述

给定正整数数组,检查元素是否严格按奇偶交替模式排列。若存在违反模式的元素,返回其索引;全部符合则返回-1。
示例用例:

  • [1, 4, 5, 7, 4] → 返回3
  • [25, 25, 25] → 返回1
  • [4, 5, 2, 7, 4, 9] → 返回-1

原代码处理[25,25,25]时出错,核心问题是使用numbers.indexOf()获取索引——当数组存在重复元素时,该方法只会返回第一个匹配项的索引,导致错误地将第二个25的索引识别为0,而非正确的1。

修复后的代码

function parity(numbers) {
    if (numbers.length < 2) return -1;
    
    for (let i = 1; i < numbers.length; i++) {
        const prevIsOdd = numbers[i-1] % 2 === 1;
        const currIsOdd = numbers[i] % 2 === 1;
        if (prevIsOdd === currIsOdd) {
            return i;
        }
    }
    
    return -1;
}

代码说明

  1. 简化逻辑:无需拆分奇偶索引数组,直接遍历数组,对比当前元素与前一个元素的奇偶性——若二者奇偶性相同,说明违反交替规则,直接返回当前索引。
  2. 解决重复元素问题:直接使用遍历的索引i,完全避免indexOf导致的索引错误。
  3. 高效性:仅需一次遍历即可完成检查,时间复杂度为O(n),比原代码的多次遍历更高效。

测试验证

  • 测试[25,25,25]:遍历到i=1时,前一个元素25是奇数,当前元素25也是奇数,返回1,符合预期。
  • 测试[1,4,5,7,4]:i=3时,前一个元素5是奇数,当前元素7也是奇数,返回3,符合预期。
  • 测试[4,5,2,7,4,9]:所有相邻元素奇偶性均不同,返回-1,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:52:51