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

如何编写算法找出数组中奇数连续重复的最长次数?

找出数组中奇数连续重复的最大次数

示例输入

let N = 12
let arr = [1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1]

任务要求

找出数组中某个奇数连续重复出现的最大次数。

求解思路

  1. 遍历数组,拆分出所有连续相同数字的片段
  2. 筛选出其中数字为奇数的片段
  3. 计算这些奇数片段的长度,取最大值即为结果

根据示例的提示信息:

  • 数字1在索引0到3之间连续重复4次→共4次
  • 数字2在索引4到8之间连续重复5次→共5次
  • 数字1在索引9到11之间连续重复3次→共3次
  • 数组中的奇数为1,它的连续出现次数为4次和3次,因此数组中奇数连续重复的最大次数是4

现有待完善函数

function longestRepeatedOdd(N, array) {

    // Write code here

    let count = 0;
    for (let i = 0; i <= array.length-1; i++){
        if (array[i] % 2 !== 0){
            count++
        }else if (array[i] % 2 === 0){
            break;
        }
    }
    console.log(count)
}

原函数的问题

原函数只能统计数组开头的连续奇数次数,遇到第一个偶数就直接终止遍历,完全无法处理后续出现的奇数段(比如示例中索引9-11的连续1),因此无法得到正确结果。

修正后的实现

function longestRepeatedOdd(N, array) {
    let maxCount = 0;
    let currentCount = 0;

    for (const num of array) {
        if (num % 2 !== 0) {
            currentCount++;
            maxCount = Math.max(maxCount, currentCount);
        } else {
            currentCount = 0;
        }
    }

    console.log(maxCount);
    return maxCount;
}

代码说明

  • maxCount:全程记录找到的最大连续奇数次数
  • currentCount:实时统计当前正在连续的奇数次数
  • 遍历数组每个元素:
    • 遇到奇数时,currentCount加1,同时用Math.max更新maxCount
    • 遇到偶数时,重置currentCount为0,因为连续奇数的序列被打断
  • 遍历结束后,maxCount就是我们要找的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:20:37