- 题目描述
给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
来源:LeetCode
- 示例
给你这个链表:1->2->3->4->5
当 k = 2 时,应当返回: 2->1->4->3->5
当 k = 3 时,应当返回: 3->2->1->4->5
- 思路分析
是2个一组翻转SwapPairs的延伸。首先判断剩下的链表长度够不够k,不够就直接接在后面不用变,如果够的话就作为一个分组进行翻转处理:用一个有k个ListNode的数组,分别指向一个分组中的各个节点,然后按照翻转的顺序串联起来即可。也需要注意当把一个分组中的第k个节点指向第k-1个后,相当于就和原本后面的节点断掉了,因此需要先保存后面的节点再翻转。
- JAVA实现
public class ReverseKGroup {
public static ListNode reverseKGroup(ListNode head, int k)