leetcode 25题
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseKGroup(head *ListNode, k int) *ListNode {
last := head
for i := 0; i < k; i++ {
if last == nil { //说明不足k个一组
return head
}
last = last.Next
}
newHead := reverse(head, last)
head.Next = reverseKGroup(last, k)
return newHead
}
func reverse(first *ListNode, last *ListNode) *ListNode {
prev := last
for first != last {
tmp := first.Next
first.Next = prev
prev = first
first = tmp
}
return prev
}