1
var splitListToParts = function (head, k) {
2
let length = 0,
3
current = head,
4
parts = [];
5

6
while (current) {
7
length++;
8
current = current.next;
9
}
10

11
let base_size = Math.floor(length / k),
12
extra = length % k;
13
current = head;
14

15
for (let i = 0; i < k; i++) {
16
let part_size = base_size + (extra > 0 ? 1 : 0);
17
let part_head = null,
18
part_tail = null;
19

20
for (let j = 0; j < part_size; j++) {
21
if (!part_head) {
22
part_head = part_tail = current;
23
} else {
24
part_tail.next = current;
25
part_tail = part_tail.next;
26
}
27

28
if (current) {
29
current = current.next;
30
}
31
}
32

33
if (part_tail) {
34
part_tail.next = null;
35
}
36

37
parts.push(part_head);
38
extra = Math.max(extra - 1, 0);
39
}
40

41
return parts;
42
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0