新建两个链表,一个保存小于x的节点,一个保存大于等于x的节点,最后合并
class Solution
{
public:
ListNode *partition(ListNode *head, int x)
{
ListNode leftHead = ListNode(-1);
ListNode rightHead = ListNode(-1);
ListNode *ptrLeftCur = &leftHead;
ListNode *ptrRightCur = &rightHead;
for (auto i = head; i != nullptr; i = i->next)
{
if (i->val < x)
{
ptrLeftCur->next = i;
ptrLeftCur = i;
}
else
{
ptrRightCur->next = i;
ptrRightCur = i;
}
}
ptrLeftCur->next = rightHead.next;
ptrRightCur->next = nullptr;
return leftHead.next;
}
};