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

Kotlin中如何仅向数组添加指定数量的输入?

我的问题:Kotlin中如何仅向数组添加指定数量的输入?

输入格式

  • 输入第一行是单个整数,表示测试用例数量,后续为各测试用例。
  • 每个测试用例包含2行输入。
  • 每个测试用例的第一行是单个整数N,表示待办清单中的问题总数。
  • 每个测试用例的第二行包含N个空格分隔的整数(例如:d1, d2, d3……)

我的疑惑是如何指定仅需计入数组的输入数量

原题链接:CodeChef TODOLIST 题目

示例输入

2
4
1000 2000 3000 4000
5
999 888 777 666 555

示例输出

4
0

请帮我用Kotlin解决这个问题。

我未完成的代码(缺少第三步)

fun main() {
val n = readLine()!!.toInt()
repeat(n) {
    val difficultyRating = readLine()!!.split(" ").map { it.toInt() }

    difficultyRating
        .count { it >= 1000 }
        .let { println(it) }
     }
}

问题分析与解决

你的代码跳过了每个测试用例读取N的步骤,直接读取了第二行的所有输入。但按照题目要求,需要严格只取N个输入值,避免输入行存在多余数据时出错。

修正后的代码

fun main() {
    val testCaseCount = readLine()!!.toInt()
    repeat(testCaseCount) {
        // 读取当前测试用例的问题总数N
        val problemCount = readLine()!!.toInt()
        // 读取输入行,处理可能的空字符串后取前N个元素转成整数列表
        val difficultyRatings = readLine()!!.split(" ")
            .filter { it.isNotEmpty() } // 处理多个连续空格导致的空字符串
            .take(problemCount)
            .map { it.toInt() }
        // 统计难度≥1000的问题数量并打印
        println(difficultyRatings.count { it >= 1000 })
    }
}

代码说明

  1. 先读取测试用例总数testCaseCount,循环对应次数处理每个测试用例。
  2. 每个测试用例先读取problemCount(即题目中的N),明确需要读取的输入数量。
  3. 读取第二行输入后,用filter { it.isNotEmpty() }处理连续空格产生的空字符串,再用take(problemCount)确保只取前N个输入值,最后转成整数列表。
  4. 统计列表中≥1000的元素数量并打印结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:50:17