题解
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
京公网安备 11010502036488号