题目:725. 分隔链表
分析
- 先遍历链表,计算链表长度
- 再计算每个分段的长度
- 将链表分割成多个段
function splitListToParts(head, k) {
let cur = head;
// 总长度
let count = 0;
let list = new Array(k).fill(null);
while (cur) {
count++;
cur = cur.next;
}
// 分段长度
let avg = Math.floor(count / k);
let mod = count % k;
for (let i = 0; i < k; i++) {
let len = avg;
if (mod > 0) {
len++;
mod--;
}
let node = head;
let prev = null;
for (let j = 0; j < len; j++) {
prev = node;
node = node.next;
}
if (prev) {
prev.next = null;
}
list[i] = head;
head = node;
}
return list;
}