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 {
// write code here
dummy := &ListNode{-1, head}
prev := dummy
for head != nil {
start := head
end := head
for i := 1; i < k && end != nil; i ++ {
end = end.Next
}
if end == nil {
break
}
next := end.Next
for start != end {
temp := start.Next
start.Next = end.Next
end.Next = start
start = temp
}
prev.Next = end
prev = head
head = next
}
return dummy.Next
}