86. 分隔链表
思路:用两个指针,一个保存小于x的节点链表,一个保存大于等于x的节点链表。然后再将两个拼接起来即可。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* partition(ListNode* head, int x) {
ListNode * p1=new ListNode(0);
ListNode * p2=new ListNode(0);
ListNode * q1=p1,*q2=p2;
while(head){
if(head->val<x){
q1->next =head;
q1=q1->next;
}else{
q2->next=head;
q2=q2->next;
}
head=head->next;
}
q1->next=p2->next;
q2->next=nullptr;
return p1->next;
}
};