ListNode *partition(ListNode *head, int x) { if (!head) return head; ListNode left_dummy(-1); ListNode right_dummy(-1); ListNode* node = head; ListNode* left_node = &left_dummy; ListNode* right_node = &right_dummy; while (node) { if (node->val < x) { left_node->next = node; left_node = node; } else { right_node->next = node; right_node = node; } node = node->next; } left_node->next = right_dummy.next; right_node->next = NULL; return left_dummy.next; }
ListNode *partition(ListNode *head, int x) { ListNode left_dummy(-1); ListNode right_dummy(-1); ListNode *ptr_left = &left_dummy; ListNode *ptr_right = &right_dummy; for (ListNode *p = head; p != NULL; p = p->next) { if (p->val < x) { ptr_left->next = p; ptr_left = p; } else { ptr_right->next = p; ptr_right = p; } } ptr_left->next = right_dummy.next; ptr_right->next = NULL; return left_dummy.next; }
ListNode* partition(ListNode* head, int x) { ListNode left_dummy(-1); // 头结点 ListNode right_dummy(-1); // 头结点 auto left_cur = &left_dummy; auto right_cur = &right_dummy; for (ListNode *cur = head; cur; cur = cur->next) { if (cur->val < x) { left_cur->next = cur; left_cur = cur; } else { right_cur->next = cur; right_cur = cur; } } left_cur->next = right_dummy.next; right_cur->next = nullptr; return left_dummy.next; }
ListNode* partition(ListNode* head, int x){ if (head == nullptr)return head; ListNode left_dummy(0); ListNode right_dummy(0); auto left_cur = &left_dummy; auto right_cur = &right_dummy; for (; head; head = head->next){ if (head->val < x){ left_cur->next = head; left_cur = head; } else{ right_cur->next = head; right_cur = head; } } left_cur->next = right_dummy.next; right_cur->next = nullptr; return left_dummy.next; }