在这里插入代码片
用一个队列记录大于x的链表
先入先出
即可保证相对位置不变
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def __init__(self):
self.queue = []
def partition(self, head: ListNode, x: int) -> ListNode:
faker = ListNode('skt')
faker.next = head
last = faker
cur = head
while cur != None:
if cur.val >= x:
self.queue.append(cur)
if cur.next != None:
cur = cur.next
else:
break
else:#cur.val < x
last.next = cur
last = cur
cur = cur.next
while self.queue != []:
thisnode = self.queue.pop(0)
last.next = thisnode
last = thisnode
last.next = None
return faker.next