leetcode如何分隔链表

本篇内容主要讲解“leetcode如何分隔链表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“leetcode如何分隔链表”吧!

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、网络空间、营销软件、网站建设、舟山网站维护、网站推广。

一、题目内容

给你一个链表和一个特定值 x ,请你对链表进行分隔,使得所有小于 x 的节点都出现在大于或等于 x 的节点之前。

你应当保留两个分区中每个节点的初始相对位置。

示例:

输入:head = 1->4->3->2->5->2, x = 3
输出:1->2->2->4->3->5

二、解题思路

创建两个链表,一个存放小于x的,一个存放大于x的,顺序不动,最后将两个链表进行拼接即可。

三、代码

# Definition for singly-linked list.
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

    def __repr__(self):
        return str(self.val)

class Solution:
    def partition(self, head: ListNode, x: int) -> ListNode:
        if not head:
            return head
        head1 = ListNode(0)
        head2 = ListNode(0)
        cur1 = head1
        cur2 = head2
        while head:
            if head.val < x:
                cur1.next = head
                head = head.next
                cur1 = cur1.next
                cur1.next = None
            else:
                cur2.next = head
                head = head.next
                cur2 = cur2.next
                cur2.next = None
        cur1.next = head2.next
        return head1.next


if __name__ == '__main__':
    s = Solution()
    head_list = [1, 4, 3, 2, 5, 2]
    head = ListNode(head_list[0])
    cur = head
    for i in range(1, len(head_list)):
        cur.next = ListNode(head_list[i])
        cur = cur.next
    x = 3
    ans = s.partition(head, x)
    print(ans)

到此,相信大家对“leetcode如何分隔链表”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


网站标题:leetcode如何分隔链表
文章出自:http://myzitong.com/article/ppsjpg.html