题解 | #牛群的重新分组#
牛群的重新分组
https://www.nowcoder.com/practice/267c0deb9a6a41e4bdeb1b2addc64c93
package main import ( . "nc_tools" ) /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ func reverse(head *ListNode) *ListNode { var prev *ListNode curr := head for curr != nil { nextTemp := curr.Next curr.Next = prev prev = curr curr = nextTemp } return prev } func reverseKGroup(head *ListNode, k int) *ListNode { if head == nil || k <= 1 { return head } dummy := &ListNode{Val:0, Next:head} prev := dummy for head != nil { tail := prev for i := 0; i < k; i++ { tail = tail.Next if tail == nil { return dummy.Next } } next := tail.Next tail.Next = nil prev.Next, head = reverse(head), next for i := 0; i < k; i++ { prev = prev.Next } prev.Next = next } return dummy.Next }