class Solution {
public:
ListNode* partition(ListNode* head, int x) {
ListNode *new_head = new ListNode(-201, head);
ListNode *left = new_head, *right = new_head;
while(left -> next && left -> next -> val < x){
left = left -> next;
right = right -> next;
}
while(right -> next){
if(right -> next -> val < x){
ListNode *temp = right -> next;
right -> next = temp -> next;
temp -> next = left -> next;
left -> next = temp;
left = left -> next;
continue;
}
right = right -> next;
}
return new_head -> next;
}
};
Accepted
168/168 cases passed (4 ms)
Your runtime beats 87.18 % of cpp submissions
Your memory usage beats 67.77 % of cpp submissions (10 MB)