题目描述:
解题思路:
创建俩个新的链表,遍历整个链表,将小于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
"""
#create two new list, one storage <x,other stroge >=x
if head is None:
return head
p_lesslist = ListNode(None)
lesslist = p_lesslist
p_biggerlist = ListNode(None)
biggerlist = p_biggerlist
probe = head
while probe != None:
if probe.val <x:
if lesslist.val is None:
lesslist.val = probe.val
else:
node = ListNode(probe.val)
lesslist.next = node
lesslist = lesslist.next
if probe.val >=x:
if biggerlist.val is None:
biggerlist.val = probe.val
else:
node = ListNode(probe.val)
biggerlist.next = node
biggerlist = biggerlist.next
probe = probe.next
if p_lesslist.val != None and p_biggerlist.val != None:
lesslist.next = p_biggerlist
return p_lesslist
else:
if p_lesslist.val is None:
return p_biggerlist
else:
return p_lesslist