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
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.
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.