Problema
Dividere i dati in blocchi di dimensione fissa è il modo in cui i programmi suddividono i risultati su più pagine, raggruppano le scritture nel database o inviano i dati in pacchetti.
Data una lista e la dimensione di un blocco, taglia la lista in blocchi consecutivi di esattamente size valori, in ordine. L'ultimo blocco contiene ciò che resta e può essere più corto.
Implementa split_into_chunks(values, size).
Ingresso
values: La lista da dividere.
size: La dimensione del blocco.
Uscita
Restituisci la lista dei blocchi. Una lista vuota non produce alcun blocco.
Vincoli
0 ≤ numero di valori ≤ 10,000
1 ≤ size ≤ 10,000
Esempi
Input:
size = 3
values = [1, 2, 3, 4, 5, 6, 7]
Output atteso:
expected = [
[1, 2, 3],
[4, 5, 6],
[7]
]
Input:
long long size = 3;
std::vector<long long> values = {1, 2, 3, 4, 5, 6, 7};
Output atteso:
std::vector<std::vector<long long>> expected = {
{1, 2, 3},
{4, 5, 6},
{7}
};
Input:
long size = 3;
long[] values = new long[] {1, 2, 3, 4, 5, 6, 7};
Output atteso:
long[][] expected = new long[][] {
new long[] {1, 2, 3},
new long[] {4, 5, 6},
new long[] {7}
};
Spiegazione
I gruppi di 3 sono: [1, 2, 3] e [4, 5, 6], e il 7 rimasto forma un ultimo blocco più corto.
Input:
size = 5
values = [8, 9]
Output atteso:
expected = [
[8, 9]
]
Input:
long long size = 5;
std::vector<long long> values = {8, 9};
Output atteso:
std::vector<std::vector<long long>> expected = {
{8, 9}
};
Input:
long size = 5;
long[] values = new long[] {8, 9};
Output atteso:
long[][] expected = new long[][] {
new long[] {8, 9}
};
Spiegazione
La dimensione è maggiore della lista, quindi tutto entra in un solo blocco: [[8, 9]].
Come affrontarlo
Prova prima da solo, poi apri un suggerimento alla volta.
Suggerimento 1
Le posizioni di partenza sono 0, size, 2·size e così via.
Suggerimento 2
Prendi una fetta da ogni posizione di partenza fino a start + size.
Suggerimento 3
L'ultima fetta può essere più corta, e una lista vuota non produce blocchi.
Complessità attesa
tempo O(n), spazio aggiuntivo O(n)
Riferimenti
Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.