LeetCode 86. Partition List 链表的划分 Python Solution

来源:互联网 发布:怎么在淘宝上买军刺 编辑:程序博客网 时间:2024/05/16 09:39

此题目对应于86. Partition List

题目要求基于一个给定的值x对链表做一个划分partition,使得小于x的放在前,大于等于x的放在后,两部分各自保持原有顺序。

解题思路很简单:

1.设置两个链表,一个存放小于x的元素,一个存放大于等于x的元素

2.合并两个链表,这里需要注意的是需要对第二个辅助链表的表尾进行制空,以防止出现从头到尾的循环链表。

下面附上python代码:

# -*- coding: utf-8 -*-# Definition for singly-linked list.class ListNode(object):    def __init__(self, x):        self.val = x        self.next = Noneclass Solution(object):    #给个list,给个值,把list分为两部分,小于x的放在前,大于等于x的放在后,两部分各自保持原有顺序    def partition(self, head, x):        if not head or not head.next:            return head        pre1 = ListNode(0)        cur1 = pre1        pre2 = ListNode(0)        cur2 = pre2        while head:            if head.val < x:                cur1.next = head                cur1 = cur1.next            else:                cur2.next = head                cur2 = cur2.next            head = head.next        cur1.next = pre2.next        cur2.next = None#需要制空否则会形成从头到尾的一致循环的list        return pre1.next        """        :type head: ListNode        :type x: int        :rtype: ListNode        """        


原创粉丝点击