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

求助:Kotlin实现数组最长连续重复数字查询的循环问题

Kotlin数组找连续重复次数最多的数字

原代码存在的问题:

  • 内层循环未从外层循环的下一个位置开始,而是从头遍历数组,无法统计连续重复的次数
  • count+ 是语法错误,正确累加应为 count++
  • longest、number 定义在外层循环内部,每次循环都会重置,无法保留全局最大值
  • 逻辑上未判断元素是否连续,只是统计所有相同元素的数量,不符合需求

修正后的代码:

fun main() {
    val myArray: IntArray = intArrayOf(1,2,2,4,5,6,7,8,8,8)    
    var longest = 0
    var number = myArray[0]
    var i = 0

    while (i < myArray.size) {
        val currentValue = myArray[i]
        var currentCount = 1
        // 从当前位置的下一个元素开始,统计连续重复次数
        var j = i + 1
        while (j < myArray.size && myArray[j] == currentValue) {
            currentCount++
            j++
        }
        // 仅当当前连续次数严格大于已记录最大值时更新,保证先出现的序列优先
        if (currentCount > longest) {
            longest = currentCount
            number = currentValue
        }
        // 跳过已统计的连续元素,提升遍历效率
        i = j
    }

    println("Longest: $longest")
    println("Number: $number")
}

关键逻辑说明:

  • 用while循环替代嵌套for循环,更灵活控制起始位置和跳过已处理元素
  • 外层循环的i直接跳转到当前连续序列的末尾,避免重复遍历
  • 内层循环从i+1开始,仅判断连续的相同元素,精准统计当前序列长度
  • longest和number定义在全局作用域,确保能保留遍历过程中的最大值
  • 仅在当前连续次数严格大于已记录值时更新结果,保证相同长度的序列取先出现的那个

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:24:19