题解 | #链表中的节点每k个一组翻转#
链表中的节点每k个一组翻转
https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e
package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
*
* @param head ListNode类
* @param k int整型
* @return ListNode类
*/
func reverse(start, end *ListNode) *ListNode {
var pre *ListNode = nil
endNext := end.Next
for start != endNext {
next := start.Next
start.Next = pre
pre = start
start = next
}
return pre
}
func reverseKGroup(head *ListNode, k int) *ListNode {
// write code here
nHead := &ListNode{Next: head}
var next *ListNode = nil
sh := nHead
eh := nHead
for eh != nil {
num := 0
for num < k {
eh = eh.Next
num += 1
if eh == nil {
return nHead.Next
}
}
next = eh.Next
temh := reverse(sh.Next, eh)
sh.Next.Next = next
tsh := sh.Next
sh.Next = temh
sh = tsh
eh = sh
}
return nHead.Next
}

查看10道真题和解析