美文网首页
K 个一组翻转链表

K 个一组翻转链表

作者: dalewong | 来源:发表于2020-07-28 07:42 被阅读0次

从最基础的翻转链表开始:

def reverse_linklist(l):
    prev = None
    head = l.head
    while head:
        tmp = head.next
        head.next = prev
        prev = head
        head = tmp

好,我们开始计算K个一组翻转列表:

  1. k个一组的数组翻转
  2. 组个组的之间的指针的指向修改
# coding: utf-8


class LinkListNode(object):

    def __init__(self, value):
        self.value = value
        self.next = None


def k_reverse_list(head, k):
    # 首先需要构造pre指针指向组
    pre = LinkListNode(None)
    pre.next = head
    # 需要一个固定的指针指向联表的头部, 最后好返回整个链表
    hair = pre
    while head:
        tail = head
        for i in range(k):
            # k个分组
            tail = tail.next
            if not tail:
                break
        # 设置lnext保存下一个k组
        lnext = tail.next
        # 翻转组内的数据
        rhead, rtail = reverse_group(head, tail)
        # 使得pre指针指向翻转后的组, 并且tail指向下一个组的开始节点
        # pre指针移动到tail, head指针移动到tail.next
        pre.next = rhead
        rtail.next = lnext
        pre = tail
        head = lnext
    return hair.next


def reverse_group(head, tail):
    # 翻转之后tail.next为pre
    # [A --> B --> C] --> [D --> E]
    # [C --> B --> A] --> [E --> D]
    pre = tail.next
    p = head
    while pre != p:
        t_next = p.next
        p.next = pre
        pre = p
        p = t_next
    return tail, head

相关文章

  • 25. K 个一组翻转链表

    K个一组反转链表 翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它...

  • K 个一组翻转链表(递归,Kotlin)

    25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它...

  • 【LeetCode】25.K个一组翻转链表

    题目描述 25.K个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k是一个正整数...

  • 【Leetcode】【链表】025-Reverse Nodes

    k个一组翻转链表 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于...

  • 25. k个一组翻转链表

    25.k个一组翻转链表 给出一个链表,每k个节点一组进行翻转,并返回翻转后的链表。 k是一个正整数,它的值小于或等...

  • 前端常见算法题(链表篇)

    一、反转问题 2021.02.11 No.25 K个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返...

  • LeetCode练习day4-链表相关

    LeetCode25 K个一组翻转链表 题目详情 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返...

  • [LeetCode]25、K个一组翻转链表

    题目描述 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表...

  • 25. K 个一组翻转链表

    一、题目 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表...

  • LeetCode#25 K 个一组翻转链表

    题目: 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的...

网友评论

      本文标题:K 个一组翻转链表

      本文链接:https://www.haomeiwen.com/subject/tnktlktx.html