Menu
Coddy logo textTech

Appiattire liste annidate

Fa parte della sezione Logica e flusso del percorso Kotlin di Coddy. Lezione 19 di 63.

flatten concatena le liste interne in un'unica lista, nell'ordine delle righe esterne e poi degli elementi interni. Rimuove un livello di annidamento, ma non elimina i duplicati né ordina i valori.

Dentro di main:

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

L’ordine delle righe viene mantenuto, incluse entrambe le copie di uno.

flatten rimuove un livello di annidamento della collezione e mantiene l’ordine degli elementi.

challenge icon

Sfida

Medio

Completa flattenRows con i parametri grid: List<List<Int>>. Restituisci tutti i valori delle righe in un'unica lista, nell'ordine delle righe.

A meno che sopra non siano indicati limiti più restrittivi, le raccolte contengono al massimo 100 elementi a ogni livello e gli argomenti interi e i valori interi delle raccolte sono compresi tra -1000 e 1000. Il testo fornito per l'analisi può includere rappresentazioni non valide o fuori intervallo, come descritto.

Restituisci un valore di tipo List<Int>. Mantieni il codice di input/output fornito. Legge gli argomenti scalari uno per riga; una lista inizia con il suo conteggio, seguito dai suoi elementi, e una mappa inizia con il conteggio delle sue voci, seguito da ciascuna chiave e valore. Le liste annidate ripetono il formato conteggio-elementi per ogni riga. Il main fornito stampa il valore restituito seguito da un a capo. Le liste usano il formato standard tra parentesi quadre di Kotlin; non stampare etichette aggiuntive.

Provalo tu

fun flattenRows(grid: List<List<Int>>): List<Int> {
    // Scrivi qui la tua soluzione.
    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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Kotlin