Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Eine Liste in Blöcke teilen

Schneide eine Liste in aufeinanderfolgende Gruppen fester Größe, wobei die letzte Gruppe bei Bedarf kürzer ist.

Das lernst du

  • Eine Liste in festen Schritten durchlaufen
  • Teilstücke nehmen, die am Ende kürzer sein dürfen
  • Daten für Seiten oder Stapel gruppieren

Problem

Das Aufteilen von Daten in Chunks fester Größe ist die Art und Weise, wie Programme Ergebnisse paginieren, Datenbank-Schreibvorgänge stapeln oder Daten in Paketen senden.

Gegeben eine Liste und eine Chunk-Größe, schneide die Liste in aufeinanderfolgende Chunks mit genau size Werten, in Reihenfolge. Der letzte Chunk enthält, was übrig bleibt, und kann kürzer sein.

Implementiere split_into_chunks(values, size).

Input

values: Die Liste, die aufgeteilt werden soll.

size: Die Chunk-Größe.

Output

Gib die Liste der Chunks zurück. Eine leere Liste ergibt keine Chunks.

Einschränkungen

0 ≤ Anzahl der Werte ≤ 10,000

1 ≤ size ≤ 10,000

Beispiele

Beispiel 1
Eingabe:
size = 3
values = [1, 2, 3, 4, 5, 6, 7]

Erwartete Ausgabe:
expected = [
    [1, 2, 3],
    [4, 5, 6],
    [7]
]
Eingabe:
long long size = 3;
std::vector<long long> values = {1, 2, 3, 4, 5, 6, 7};

Erwartete Ausgabe:
std::vector<std::vector<long long>> expected = {
    {1, 2, 3},
    {4, 5, 6},
    {7}
};
Eingabe:
long size = 3;
long[] values = new long[] {1, 2, 3, 4, 5, 6, 7};

Erwartete Ausgabe:
long[][] expected = new long[][] {
    new long[] {1, 2, 3},
    new long[] {4, 5, 6},
    new long[] {7}
};

Erläuterung

Gruppen von 3: [1, 2, 3] und [4, 5, 6], und die übrig gebliebene 7 bildet einen letzten, kürzeren Chunk.

Beispiel 2
Eingabe:
size = 5
values = [8, 9]

Erwartete Ausgabe:
expected = [
    [8, 9]
]
Eingabe:
long long size = 5;
std::vector<long long> values = {8, 9};

Erwartete Ausgabe:
std::vector<std::vector<long long>> expected = {
    {8, 9}
};
Eingabe:
long size = 5;
long[] values = new long[] {8, 9};

Erwartete Ausgabe:
long[][] expected = new long[][] {
    new long[] {8, 9}
};

Erläuterung

Die Größe ist größer als die Liste, also passt alles in einen Chunk: [[8, 9]].

So gehst du vor

Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.

Hinweis 1

Die Startpositionen sind 0, size, 2·size und so weiter.

Hinweis 2

Nimm von jeder Startposition ein Teilstück bis start + size.

Hinweis 3

Das letzte Teilstück darf kürzer sein, und eine leere Liste ergibt gar keine Blöcke.

Erwartete Komplexität

Zeit O(n), zusätzlicher Speicher O(n)

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.