力扣链接:
https://leetcode.cn/problems/reverse-nodes-in-k-group/
解题思路:
通过递归实现的,每次递归将以后链表的前 k 个节点进行翻转,并将翻转后的链表的尾节点连贯上递归后返回的链表的头节点,最终返回整个链表的新头节点
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func reverseKGroup(head *ListNode, k int) *ListNode { cur := head for i := 0; i < k; i++ { if cur == nil { return head } cur = cur.Next } newHead := reverse(head, cur) head.Next = reverseKGroup(cur, k) return newHead}func reverse(start, end *ListNode) *ListNode { var pre *ListNode cur := start for cur != end { nxt := cur.Next cur.Next = pre pre = cur cur = nxt } return pre}