Volver a los desafíos
Fácil 0 resueltos 0% de aceptación

Aplanar un arreglo 2D

Combina las filas de un arreglo 2D de enteros en un solo arreglo.

Lo que aprenderás

  • Recorrer filas y columnas
  • Añadir los valores a una sola lista
  • Conservar el orden original

Problema

Ver original (inglés)

Combina las filas de un arreglo 2D de enteros en un solo arreglo. Lee las filas de arriba hacia abajo y los enteros dentro de cada fila de izquierda a derecha. Omite las filas vacías. Conserva los enteros repetidos y su orden. Las filas pueden tener diferentes longitudes. Hay exactamente dos niveles de arreglos: las filas contienen solo enteros, sin valores nulos ni listas más profundas.

Implementa flatten_nested_list(values).

Entrada

values: Las filas de enteros a combinar, en orden.

Salida

Devuelve todos los enteros en orden de fila. Devuelve un arreglo vacío si no hay enteros.

Restricciones

0 ≤ número de filas ≤ 10,000. Como máximo 10,000 enteros en total. Cada entero está entre −1,000,000,000 y 1,000,000,000. Las filas pueden estar vacías o tener diferentes longitudes.

Ejemplos

Ejemplo 1
Entrada:
values = [
    [1, 2],
    [],
    [3, 4]
]

Salida esperada:
expected = [1, 2, 3, 4]
Entrada:
std::vector<std::vector<long long>> values = {
    {1, 2},
    {},
    {3, 4}
};

Salida esperada:
std::vector<long long> expected = {1, 2, 3, 4};
Entrada:
long[][] values = new long[][] {
    new long[] {1, 2},
    new long[] {},
    new long[] {3, 4}
};

Salida esperada:
long[] expected = new long[] {1, 2, 3, 4};

Explicación

Lee 1 y 2 de la primera fila. Omite la segunda fila vacía. Agrega 3 y 4 de la última fila.

Ejemplo 2
Entrada:
values = [
    [],
    []
]

Salida esperada:
expected = []
Entrada:
std::vector<std::vector<long long>> values = {
    {},
    {}
};

Salida esperada:
std::vector<long long> expected = {};
Entrada:
long[][] values = new long[][] {
    new long[] {},
    new long[] {}
};

Salida esperada:
long[] expected = new long[] {};

Explicación

Ambas filas están vacías, así que no hay enteros para agregar.

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

Recorre las filas en orden y añade cada entero que encuentres.

Pista 2

Las filas vacías no aportan nada, pero conserva el orden de todos los valores de las filas no vacías.

Pista 3

La entrada solo tiene dos niveles, así que no hace falta aplanado recursivo.

Complejidad esperada

tiempo O(n), espacio extra O(n)

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.