ListNode[] listNodes = new ListNode[k];
if (head == null) {
return listNodes;
}
Integer[] integers = new Integer[k];
int sum = 1;
ListNode tmp = head;
while (tmp.next != null) {
sum++;
tmp = tmp.next;
}
Arrays.fill(integers, sum / k);
for (int i = 0; i < sum % k; i++) {
integers[i] += 1;
}
for (int j = 0, integersLength = integers.length; j < integersLength; j++) {
if (head == null) {
break;
}
Integer integer = integers[j];
int i = 0;
tmp = head;
listNodes[j] = tmp;
while (tmp != null) {
i++;
if (i < integer) {
tmp = tmp.next;
} else {
head = tmp.next;
tmp.next = null;
break;
}
}
}
return listNodes;
}
解题思路
- 没时间,就没有优化代码了
- 还是在于如何均分各链表的个数
1、能整除就均分,不能整除就先Arrays.fill(integers, sum / k);
从头到尾均分余数;
- 然后遍历链表,给每个链表分配对应个数的值,就是这样