题解 | #链表中的节点每k个一组翻转#
链表中的节点每k个一组翻转
http://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e
// 递归 + 翻转
func reverseKGroup( head *ListNode , k int ) *ListNode {
// write code here
size := Size(head)
if head == nil || size < k {
return head
}
dummy := &ListNode{0, head}
for i := 1; i < k; i++ {
temp := head.Next
head.Next = temp.Next
temp.Next = dummy.Next
dummy.Next = temp
}
if head != nil {
head.Next = reverseKGroup(head.Next, k)
}
return dummy.Next
}
func Size(head *ListNode) int {
size := 0
for head != nil {
size++
head = head.Next
}
return size
}