Retour aux défis
Facile 0 résolus 0 % de réussite

Flatten a 2D Array

Combine the rows of a 2D integer array into one array.

Ce que vous allez apprendre

  • Parcourir les lignes et les colonnes
  • Ajouter les valeurs à une seule liste
  • Conserver l'ordre d'origine

Problème

Combine the rows of a 2D integer array into one array. Read rows from top to bottom and integers within each row from left to right. Skip empty rows. Preserve repeated integers and their order. Rows may have different lengths. There are exactly two array levels: rows contain only integers, with no null values or deeper lists.

Implement flatten_nested_list(values).

Input

values: The integer rows to combine, in order.

Output

Return all integers in row order. Return an empty array if there are no integers.

Contraintes

0 ≤ number of rows ≤ 10,000. At most 10,000 integers in total. Each integer is between −1,000,000,000 and 1,000,000,000. Rows may be empty or have different lengths.

Exemples

Exemple 1
Entrée :
values = [
    [1, 2],
    [],
    [3, 4]
]

Sortie attendue :
expected = [1, 2, 3, 4]
Entrée :
std::vector<std::vector<long long>> values = {
    {1, 2},
    {},
    {3, 4}
};

Sortie attendue :
std::vector<long long> expected = {1, 2, 3, 4};
Entrée :
long[][] values = new long[][] {
    new long[] {1, 2},
    new long[] {},
    new long[] {3, 4}
};

Sortie attendue :
long[] expected = new long[] {1, 2, 3, 4};

Explication

Read 1 and 2 from the first row. Skip the empty second row. Append 3 and 4 from the last row.

Exemple 2
Entrée :
values = [
    [],
    []
]

Sortie attendue :
expected = []
Entrée :
std::vector<std::vector<long long>> values = {
    {},
    {}
};

Sortie attendue :
std::vector<long long> expected = {};
Entrée :
long[][] values = new long[][] {
    new long[] {},
    new long[] {}
};

Sortie attendue :
long[] expected = new long[] {};

Explication

Both rows are empty, so there are no integers to append.

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

Parcourez les lignes dans l’ordre et ajoutez chaque entier rencontré.

Indice 2

Les lignes vides n’ajoutent rien, mais conservez l’ordre de toutes les valeurs des lignes non vides.

Indice 3

L’entrée n’a que deux niveaux de profondeur, donc aucune récursion n’est nécessaire.

Complexité attendue

temps O(n), espace supplémentaire O(n)

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.