本题采用的是分离了2类链表,最后合在一起的方法,需要注意的是容易产生环。需要最后处理一下。代码如下:
# 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
"""
if not head:
return head
if not head.next:
return head
a = ListNode(1)
b = ListNode(2)
a1 = a
b1 = b
while head:
if head.val < x:
a1.next = head
a1 = a1.next
head = head.next
else:
b1.next = head
b1 = b1.next
head = head.next
if not head:
a1.next = None
b1.next = None
if not a.next:
return b.next
else:
a1.next = b.next
return a.next