對不起我厚顏無恥
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void insert(ListNode * p,ListNode * start,int x)
{
ListNode* p1 = start;
ListNode* p2 = start->next;
while(p2)
{
if(p2->val >= x) break;
else
{
p1 = p2;
p2 = p2->next;
}
}
p1->next = p;
p->next = p2;
}
ListNode* partition(ListNode* head, int x) {
ListNode* start = new ListNode(INT_MIN);
start->next = head;
ListNode * p1 = start;
ListNode * p2 = head;
ListNode * p3 = NULL;
vector<ListNode*>v;
while(p2)
{
p3 = (p2 == NULL) ? NULL : p2->next;
if(p2->val < x)
{
p1->next = p3;
v.push_back(p2);
p2 = p3;
}
else
{
p1 = p2;
p2 = p2->next;
}
}
for(int i = 0;i<v.size();i++)
{
insert(v[i],start,x);
}
return start->next;
}
};