package main import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ func reverseKGroup( head *ListNode , k int ) *ListNode { groupNum := k dummy := &ListNode{Val: 0} pre := dummy end := dummy dummy.Next = head for end != nil { for i := 0; i < groupNum && end != nil; i++ { end = end.Next } if end == nil { break } start := pre.Next next := end.Next end.Next = nil pre.Next = reversion(start) start.Next = next pre = start end = pre } return dummy.Next } func reversion(start *ListNode) *ListNode { //开始颠倒链表 var res *ListNode for start != nil { next := start.Next start.Next = res res = start start = next } return res }