题目链接
英文链接:https://leetcode.com/problems/split-linked-list-in-parts/
中文链接:https://leetcode-cn.com/problems/split-linked-list-in-parts/
题目详述
给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。
每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。
这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。
返回一个符合上述规则的链表的列表。
举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4], null ]
示例 1:
1 | 输入: |
示例 2:
1 | 输入: |
提示:
- root 的长度范围: [0, 1000].
- 输入的每个节点的大小范围:[0, 999].
- k 的取值范围: [1, 50].
题目详解
- 首先求出链表长度,然后根据 k 计算每个子链表的长度,如果不能整除按照题目要求,排在前面的链表要多一个结点。
- 遍历链表,进行赋值,然后跳到下一个头结点。
- 注意为了断链,需要一个
pre
结点记录每个子链表的尾结点。
1 | public class LeetCode_00725 { |