https://leetcode.com/problems/partition-list/description/?envType=study-plan-v2&envId=top-interview-150
def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:
if not head: return head
greater_head = ListNode(-1)
greater_ptr = greater_head
lesser_head = ListNode(-1)
lesser_ptr = lesser_head
while head:
if head.val >= x:
greater_ptr.next = head
greater_ptr = greater_ptr.next
head = head.next
greater_ptr.next = None
else:
lesser_ptr.next = head
lesser_ptr = lesser_ptr.next
head = head.next
lesser_ptr.next = None
lesser_ptr.next = greater_head.next
return lesser_head.next