# 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]:
if not head:
return None
less, greater = [], []
cur = head
while cur:
if cur.val < x:
less.append(cur.val)
else:
greater.append(cur.val)
cur = cur.next
cur = head
for val in less:
cur.val = val
cur = cur.next
for val in greater:
cur.val = val
cur = cur.next
return head# 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]:
left, right = ListNode(), ListNode()
ltail, rtail = left, right
while head:
if head.val < x:
ltail.next = head
ltail = ltail.next
else:
rtail.next = head
rtail = rtail.next
head = head.next
ltail.next = right.next
rtail.next = None
return left.next