Menu
Coddy logo textTech

Achatar Listas Aninhadas

Parte da seção Lógica e Fluxo do Journey de Kotlin da Coddy. Lição 19 de 63.

flatten concatena as listas internas em uma única lista, na ordem das linhas externas e, em seguida, na ordem dos elementos internos. Ele remove um nível de aninhamento, mas não remove duplicatas nem ordena os valores.

Dentro de main:

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

A ordem das linhas é preservada, incluindo as duas cópias de um.

flatten remove um nível de aninhamento da coleção e preserva a ordem dos elementos.

challenge icon

Desafio

Médio

Complete flattenRows com o parâmetro grid: List<List<Int>>. Retorne todos os valores das linhas como uma única lista, na ordem das linhas.

A menos que limites mais rigorosos sejam especificados acima, as coleções contêm no máximo 100 elementos em cada nível, e os argumentos inteiros e os valores inteiros das coleções estão entre -1000 e 1000. O texto fornecido para análise pode incluir representações inválidas ou fora do intervalo, conforme descrito.

Retorne um valor do tipo List<Int>. Mantenha o código de entrada/saída fornecido. Ele lê argumentos escalares, um por linha; uma lista começa com sua quantidade, seguida por seus elementos, e um mapa começa com a quantidade de entradas, seguida por cada chave e valor. Listas aninhadas repetem o formato de quantidade e elementos para cada linha. O main fornecido imprime o valor retornado seguido por uma quebra de linha. As listas usam o formato padrão entre colchetes do Kotlin; não imprima rótulos adicionais.

Experimente você mesmo

fun flattenRows(grid: List<List<Int>>): List<Int> {
    // Escreva sua solução aqui.
    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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Playground de Kotlin