leetcode如何分隔链表

发布时间:2021-12-15 14:43:18 作者:iii
来源:亿速云 阅读:135

本篇内容主要讲解“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如何分隔链表”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. LeetCode如何找出链表的中间节点
  2. leetcode:[206]反转链表

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

leetcode

上一篇:LeetCode怎么搜索插入位置

下一篇:如何用leetcode分发饼干

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》