题解 | #链表中的节点每k个一组翻转#
链表中的节点每k个一组翻转
https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e
package main // import "fmt" 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 { nh := &ListNode{} tail := nh cur := head for { end := findHead(cur, k-1) if end == nil { tail.Next = cur break } // fmt.Printf("尾巴%d", end.Val) tmp := end.Next end.Next = nil tmpH := reverse(cur) tail.Next = tmpH tail = cur cur = tmp } return nh.Next } func findHead(head *ListNode, k int) *ListNode { t2 := head for i := 0; i < k; i++ { if t2 == nil { return nil } t2 = t2.Next } return t2 } func reverse(head *ListNode) *ListNode { cur := head var pre *ListNode for cur != nil { tmp := cur.Next cur.Next = pre pre = cur cur = tmp } return pre }