leetcode:K 个一组翻转链表(没弄懂)

2021/10/12 23:16:41

本文主要是介绍leetcode:K 个一组翻转链表(没弄懂),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在这里插入图片描述
思路:
1.递归,每次处理k个,不足k个不处理
2.对k个的处理用reverse进行
3.reverse实际上由k+1个,通过prev,first和temp来逐次挪动

src

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func reverseKGroup(head *ListNode, k int) *ListNode {
    node := head
    for i := 0; i < k; i++ {
        if node == nil {
            return head
        }
        node = node.Next
    }
    newHead := reverse(head, node)
    head.Next = reverseKGroup(node, k)
    return newHead

}

func reverse(first, last *ListNode) *ListNode {
    prev := last
    for first != last {
        tmp := first.Next
        first.Next = prev
        prev = first
        first = tmp
    }
    return prev
}

总结:
思路get了,细节没get



这篇关于leetcode:K 个一组翻转链表(没弄懂)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程