GoLang刷题之leetcode

题目25:k个一组反转链表

题目描述:

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。

k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

题解:

func reverseKGroup(head *ListNode, k int) *ListNode {
    cur := head
    count := 0
    for cur != nil && count != k{
        cur = cur.Next
        count++
    }
    if count == k{
        cur = reverseKGroup(cur, k)
        for count>0{
            tmp := head.Next
            head.Next = cur
            cur = head
            head = tmp
            count--
        }
        head = cur
    }
    return head
}

你可能感兴趣的:(leetcode,算法,职场和发展)