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

全部评论

相关推荐

03-18 17:22
门头沟学院 Java
代码飞升:海投就完了,别管评论区那个sbb卖课的
点赞 评论 收藏
分享
野猪不是猪🐗:我assume that你must技术aspect是solid的,temperament也挺good的,however面试不太serious,generally会feel style上不够sharp
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务