/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseKGroup(head *ListNode, k int) *ListNode {
list := []*ListNode{}
for l := head; l != nil; l = l.Next {
list = append(list, l)
}
for i := 0; i+k <= len(list); i += k {
for j := 0; j < k/2; j++ {
list[i+j], list[i+k-j-1] = list[i+k-j-1], list[i+j]
}
}
res := &ListNode{}
cur := res
for i := 0; i < len(list); i++ {
cur.Next = list[i]
cur = cur.Next
}
cur.Next = nil
return res.Next
}