题解 | #链表中的节点每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 {
	// write code here
	if head == nil || head.Next == nil || k == 1 {
		return head
	}
	node := new(ListNode)
	node.Next = head
	total := 0
	ptr := node
	for ptr.Next != nil {
		ptr = ptr.Next
		total++
	}
	count := total / k
	pre := node
	for i := 0; i < count; i++ {
		pHead := pre.Next
		for j := 0; j < k-1; j++ {
			cur := pHead.Next
			pHead.Next = cur.Next
			cur.Next = pre.Next
			pre.Next = cur
		}
		pre = pHead
	}
	return node.Next
}

全部评论
用了两次for循环,其实还比较简单吧
点赞 回复 分享
发布于 2023-04-19 23:31 广东

相关推荐

04-18 00:32
已编辑
中南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务