25. Reverse Nodes in k-Group
今天份的困难题 文章目录 题目 分析 代码 题目 给定一个链表,一次反转链表k个节点,并返回修改后的链表。 其中k是正整数,如果剩下链表的长度不足k的话,返回原来的样子 例子: Given this linked list: 1->2->3->4->5 For k = 2, you should return: 2->1->4->3->5 For k = 3, you should return: 3->2->1->4->5 分析 对于反转链表的题目已经做了不少了,这题算是普通链表的升级版,主要就是分析相比于普通的链表我们需要多知道哪些信息。 以下面的链表为例,k=2,1->2->3->4->5 首先我们肯定需要用到dummy,dummy.next = head,用来储存我们需要返回的值。 首先,我们需要判断这个链表的节点满足我们反转的要求,令r为我们需要反转部分的第一个节点,如果它往后走k个节点始终没有走到空节点的话,那么就满足反转的条件,而r节点同时也走到了下一个需要反转部分的开始节点。 首先我们从第一部分开始反转,如果l同样是需要反转部分的开始节点,令 pre, cur= l, l.next 即可,然后就是标准的反转过程,如果k=2的话,反转两个节点,就是进行1次。 那么,现在的链表为: dummy->1<- (-> )2 3->4->5 然后 pre 节点指向2, cur