【Leetcode】【python】Reverse Nodes in k-Group

来源:互联网 发布:js实现图片放大镜效果 编辑:程序博客网 时间:2024/06/05 14:10

题目大意

将一个链表中每k个数进行翻转,末尾不足k个的数不做变化。

解题思路

参考:
https://shenjie1993.gitbooks.io/leetcode-python/025%20Reverse%20Nodes%20in%20k-Group.html
A->B->C->D->E,现在我们要翻转BCD三个节点。进行以下几步:
1.C->B
2.D->C
3.B->E
4.A->D
5.返回及节点B

代码

class Solution(object):    def reverseKGroup(self, head, k):        """        :type head: ListNode        :type k: int        :rtype: ListNode        """        if not head or k <= 1:            return head        dummy = ListNode(0)        dummy.next = head        current = dummy        while current:            current = self.reverseNextK(current, k)        return dummy.next    def reverseNextK(self, head, k):        # Check if there are k nodes left        current = head        for i in range(k):            if not current.next:                return None            current = current.next        # The last node when the k nodes reversed        node = head.next        prev = head        curr = head.next        # Reverse k nodes        for i in range(k):            nextNode = curr.next            curr.next = prev            prev = curr            curr = nextNode        # Connect with head and tail        node.next = curr        head.next = prev        return node

总结

太绕了