编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。
示例
输入: head = 3->5->8->5->10->2->1, x = 5
输出: 3->1->2->10->5->5->8
提示:顺序不一定完全相同
解答 python3
# 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:
if head==None:
return head;
cur=head.next;
pre=head;
while cur!=None:
if cur.val<x:
pre.next=cur.next;#少了这一步链表就断了
cur.next=head;
head=cur;
cur=pre.next;
else:
cur=cur.next;
pre=pre.next;
return head;