题目
给定一个链表和一个特定值 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(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def partition(self, head, x):
"""
:type head: ListNode
:type x: int
:rtype: ListNode
"""
p_L=ListNode(-1)
p_L_head=p_L
p_R=ListNode(-1)
p_R_head=p_R
while head is not None:
# print(head.val)
if head.val<x:
p_L.next=head
p_L=p_L.next
else:
p_R.next=head
p_R=p_R.next
head=head.next
p_L.next=p_R_head.next
p_R.next=None
return p_L_head.next