题目:给定一条单向无环链表和参数 k,编写算法将链表分隔为 k 个子链表,要求:1. 子链表的长度可以为空;2. 所有子链表之间的长度差需要小于等于 1;3. 前面的子链表长度应该大于等于后面子链表的长度。
工具/原料
1
Eclipse
2
JDK1.8
方法/步骤
1
编写一个静态内部类,用于表示链表节点,通过该类对象可以构建一条单向链表结构,图示代码。
2
实现算法,将链表按要求分隔为多个子链表,算法思想:1. 根据链表长度和分隔的链表数量(即参数 k)计算每个子链表的长度;2. 根据每个子链表的长度,将原始链表拆分为多个子链表。图示,编写一个函数,计算分解后的各个子链表的长度。
3
编写一个函数,根据各个子链表的长度,从原始链表中分解出相应长度的子链表,注意,如果子链表长度为 0 ,则代表子链表为一个空链表。
4
编写一个函数,将一条单向无环链表转变为一个字符串,便于输出链表,用于辅助本地测试。
5
编写本地测试方法。
6
运行本地测试方法,观察控制台输出,符合预期,本地测试通过。
7
平台提交算法,测试通过。
注意事项
参数 k 的值大于等于 1