86. 分隔链表

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

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

 

示例:

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

 

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

class Solution:
    def partition(self, head: ListNode, x: int) -> ListNode:
        firstNode=ListNode(0)
        firstNode.next=head
        sepNode=firstNode
        preNode=firstNode
        curNode=head
        while curNode is not None:
            if curNode.val<x:
                if preNode is sepNode:
                    preNode=curNode
                    sepNode=curNode
                    curNode=curNode.next
                else:
                    preNode.next=curNode.next
                    curNode.next=sepNode.next
                    sepNode.next=curNode
                    sepNode=curNode
                    curNode=preNode.next
            else:
                preNode=curNode
                curNode=preNode.next
        
        return firstNode.next

 

posted @ 2020-09-24 18:57  XXXSANS  阅读(91)  评论(0编辑  收藏  举报