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

Kotlin实现接收整型数组与lambda的minmax最值函数求助

问题说明

需要实现minmax函数,该函数接收两个入参:

  • 整型数组
  • 接收两个Int参数、返回Boolean类型的lambda比较逻辑
    函数根据传入的lambda判断规则,返回对应数组的最小值或最大值。现有代码存在lambda赋值语法错误,且未实现minmax函数逻辑。
原错误代码
fun main(args: Array<String>) {
    val numsCount=readLine()!!.trim().toInt()
    val nums = Array<Int>(numsCount, {0}) 
    for (i in 0 until numsCount) { 
        val numsItem=readLine()!!.trim().toInt()
        nums[i] = numsItem
    }
    val type =readLine()!!.trim().toInt()!=0 
    var lambda= {a: Int, b: Int -> a>b}
    if(!type){
        // 语法错误:此处是错误的函数调用写法,并非给lambda重新赋值
        lambda {a: Int, b: Int -> a<b}
        // 逻辑错误:仅在type为false时执行计算和输出,type为true时无返回结果
        val result = minmax(nums, lambda)
        println(result)
    }
}
修复方案

错误点修正

  1. lambda重新赋值需要使用=运算符,不能直接在变量后拼接lambda块做函数调用
  2. 实现minmax核心逻辑:初始化候选极值为数组首元素,遍历数组所有元素,通过传入的比较lambda判断是否更新候选极值,遍历结束后返回结果
  3. 调整结果计算、输出的位置,保证两种比较逻辑下都能正常返回结果

完整可运行代码

fun minmax(nums: Array<Int>, comparator: (Int, Int) -> Boolean): Int {
    // 初始化极值为数组第一个元素
    var target = nums[0]
    for (current in nums) {
        // 传入lambda返回true时,说明当前元素更符合极值要求,更新候选值
        if (comparator(current, target)) {
            target = current
        }
    }
    return target
}

fun main(args: Array<String>) {
    val numsCount = readLine()!!.trim().toInt()
    val nums = Array<Int>(numsCount) { 0 }
    for (i in 0 until numsCount) {
        val numsItem = readLine()!!.trim().toInt()
        nums[i] = numsItem
    }
    val type = readLine()!!.trim().toInt() != 0
    // 默认识别最大值的比较逻辑:当前值大于候选值时更新
    var lambda: (Int, Int) -> Boolean = { a, b -> a > b }
    if (!type) {
        // 识别最小值的比较逻辑:当前值小于候选值时更新,赋值必须使用=
        lambda = { a, b -> a < b }
    }
    // 统一计算、输出结果
    val result = minmax(nums, lambda)
    println(result)
}
运行逻辑
  • 当输入type为非0值时,使用a > b比较逻辑,遍历过程中始终保留更大的元素,最终返回数组最大值
  • 当输入type为0值时,使用a < b比较逻辑,遍历过程中始终保留更小的元素,最终返回数组最小值

内容的提问来源于stack exchange,提问作者ばらす

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:51:20