1var splitListToParts = function (head, k) {2let length = 0,3current = head,4parts = [];56while (current) {7length++;8current = current.next;9}1011let base_size = Math.floor(length / k),12extra = length % k;13current = head;1415for (let i = 0; i < k; i++) {16let part_size = base_size + (extra > 0 ? 1 : 0);17let part_head = null,18part_tail = null;1920for (let j = 0; j < part_size; j++) {21if (!part_head) {22part_head = part_tail = current;23} else {24part_tail.next = current;25part_tail = part_tail.next;26}2728if (current) {29current = current.next;30}31}3233if (part_tail) {34part_tail.next = null;35}3637parts.push(part_head);38extra = Math.max(extra - 1, 0);39}4041return parts;42};