您的位置:首页 > 其它

【leetcode】Partition List

2015-05-18 13:18 375 查看
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.

You should preserve the original relative order of the nodes in each of the two partitions.

For example,
Given 1->4->3->2->5->2 and x = 3,
return 1->2->2->4->3->5.

class Solution {
public:
ListNode* partition(ListNode* head, int x) {
if(head==NULL) return NULL;

ListNode * less=new ListNode(0);
ListNode * greater=new ListNode(0);
ListNode * greaterhead=greater;
ListNode * lesshead=less;
ListNode * p=head;

while(p)
{
if(p->val<x)
{
less->next=p;
p=p->next;
less=less->next;
less->next=NULL;
}
else
{
greater->next=p;
p=p->next;
greater=greater->next;
greater->next=NULL;
}
}

less->next=greaterhead->next;
return lesshead->next;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: