题解

1、建立一个最小的节点node,将node.next = head,这样可以将链表的头节点当作一般节点来处理。
2、设置两个变量tmp1,tmp2 = node,node tmp2遍历链表,tmp1代表小于x的最后一个链表节点
2.1、退出条件----如果tmp2.next==None:break
2.2、如果tmp2本身小于x,tmp2.next也小于x,则tmp1,tmp2后移
2.3、如果tmp2.next大于等于x,tmp2后移
2.4、否则,就需要将tmp2.next插到tmp1后面,tmp1后移一位
(也就是出现tmp2本身大于x,而tmp2.next小于x)

有问题留言,没问题点赞偶~

class Solution:
    def partition(self , head , x ):
        if not head :return None
        node = ListNode(-999)
        node.next = head
        tmp,tmp2 = node,node
        while tmp2.next!=None:
            if tmp2.next.val>=x:
                tmp2 = tmp2.next
            elif tmp2.val<x:
                tmp = tmp.next
                tmp2 = tmp2.next
            else:
                tmp3 = tmp2.next.next
                tmp2.next.next = tmp.next
                tmp.next = tmp2.next
                tmp2.next = tmp3
                tmp = tmp.next
        return node.next