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