Menu
Coddy logo textTech

ネストしたリストの平坦化

CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 19/63。

flattenは、内側のリストを外側の行の順序、次に内側の要素の順序で連結し、1つのリストにします。ネストを1レベル解除しますが、重複を削除したり値をソートしたりはしません。

main の中:

val rows = listOf(listOf(3, 1), emptyList(), listOf(1, 2))
println(rows.flatten())

行の順序は維持され、1 も 2 個とも含まれます。

flatten はコレクションのネストを1レベル取り除き、要素の順序を保持します。

challenge icon

チャレンジ

中級

パラメータ grid: List<List<Int>>を使用してflattenRowsを完成させてください。すべての行の値を、行の順序で1つのリストとして返してください。

上記でより厳しい範囲が指定されていない限り、コレクションは各レベルで最大100個の要素を含み、整数引数および整数コレクション値は-1000から1000の範囲です。解析用に提供されるテキストには、説明されているように、無効または範囲外の表現が含まれる場合があります。

型List<Int>の値を返してください。提供された入力/出力コードはそのまま使用してください。スカラー引数は1行に1つずつ読み取られます。リストは個数に続いて要素が並び、マップはエントリ数に続いて各キーと値が並びます。ネストされたリストでは、各行について個数と要素の形式が繰り返されます。提供されたmainは、戻り値の後に改行を1つ付けて出力します。リストにはKotlin標準の角括弧形式を使用し、追加のラベルは出力しないでください。

自分で試してみよう

fun flattenRows(grid: List<List<Int>>): List<Int> {
    // ここに解答を書いてください。
    return emptyList()
}
fun main() {
    val gridCount = readln().toInt()
    val grid = mutableListOf<List<Int>>()
    for (i0 in 0 until gridCount) {
        val gridItemCount = readln().toInt()
        val gridItem = mutableListOf<Int>()
        for (i1 in 0 until gridItemCount) {
            val gridItemItem = readln().toInt()
            gridItem.add(gridItemItem)
        }
        grid.add(gridItem)
    }
    println(flattenRows(grid))
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: Kotlinプレイグラウンド