1
class Solution {
2
public ListNode[] splitListToParts(ListNode head, int k) {
3
ListNode[] arr = new ListNode[k];
4

5
if (k < 2 || head == null || head.next == null) {
6
arr[0] = head;
7
return arr;
8
}
9

10
ListNode temp = head;
11
int len = 1;
12
while (temp.next != null) {
13
len++;
14
temp = temp.next;
15
}
16

17
int partition = len / k; // no of part 3
18
int extra = len % k; // extra node 1 0
19

20
ListNode curr = head;
21
ListNode prev = null;
22
int index = 0;
23
while (head != null) {
24
arr[index++] = curr;
25
for (int i = 0; i < partition && curr != null; i++) {
26
prev = curr;
27
curr = curr.next;
28
}
29
if (extra > 0) {
30
prev = curr;
31
curr = curr.next;
32
extra--;
33
}
34
head = curr;
35
prev.next = null;
36
}
37
return arr;
38
}
39
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0