难度:Medium
- 由后向前扫描,遇到 ≥x 的元素则将其用类似冒泡排序的方法 swap 到最后面,从而可减少空间常数,但这样时间复杂度是
的
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:
tmpls = []
u = head
while u != None:
tmpls.append(u)
u = u.next
while tmpls:
cur = tmpls.pop()
if cur.val >= x:
pre = cur
while pre.next and pre.next.val < x:
cur = pre.next
pre.val, cur.val = cur.val, pre.val
pre = cur
return head