题解 | #链表中的节点每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
}

全部评论

相关推荐

05-30 12:03
山西大学 C++
offer来了我跪着接:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-18 16:32
quench@0916:一顿操作猛如虎,一看工资2500
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务