Leetcode刷题Python86.分隔链表

Posted Better Bench

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题Python86.分隔链表相关的知识,希望对你有一定的参考价值。

1 题目

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你不需要 保留 每个分区中各节点的初始相对位置。

2 解析

初始化两个空节点,dummy1和dummy2,分别存储小于x的元素和大于等于x的元素。
遍历链表,将所有小于x的元素链接到dummy1上,将大于等于x的链接到dummy2上,最后给dummy2添加一个null尾巴。再将两条链表dummy1和dummy2合并,形成一条新的链表。

3 Python 代码实现

    def partition(self, head: ListNode, x: int) -> ListNode:
        dummy1,dummy2 = ListNode(),ListNode()
        curr1,curr2,curr = dummy1,dummy2,head
        while curr:
            if curr.val <x:
                curr1.next = curr
                curr1 = curr1.next
            else :
                curr2.next = curr
                curr2 = curr2.next
            curr = curr.next
        curr1.next,curr2.next = dummy2.next,None
        # 注意返回是头节点的后一个元素开始的链表
        return dummy1.next
2022深度学习开发者峰会 5月20日13:00让我们相聚云端,共襄盛会!

以上是关于Leetcode刷题Python86.分隔链表的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题100天—86. 分隔链表( 链表)—day60

LeetCode Java刷题笔记—86. 分隔链表

LeetCode:86. 分隔链表(python3)

LeetCode刷题模版:81 - 90

LeetCode刷题模版:81 - 90

Leetcode练习(Python):链表类:第86题:分隔链表:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。 你应当保留两个分区中每个节点