题解 | #链表中的节点每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 reverseKGroup(head *ListNode, k int) *ListNode { hair := &ListNode{Next: head} pre := hair for head != nil { tail := pre for i := 0; i < k; i++ { tail = tail.Next if tail == nil { return hair.Next } } nex := tail.Next head, tail = myReverse(head, tail) pre.Next = head tail.Next = nex pre = tail head = tail.Next } return hair.Next } func myReverse(head, tail *ListNode) (*ListNode, *ListNode) { prev := tail.Next p := head for prev != tail { nex := p.Next p.Next = prev prev = p p = nex } return tail, head }