您的位置:首页 > 其它

86. Partition List LeetCode

2016-03-07 22:38 513 查看
题意:给出一个链表和一个元素x,把链表中节点值小于x的都放在链表左边,大于x的都放在右边。

题解:开两个头节点,扫一遍原链表,小于x的链接到第一个头,大于x的链接到第二个头,最后把两个链接一下。

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* partition(ListNode* head, int x) {
ListNode* head1 = new ListNode(0),*head2 = new ListNode(0),*pd1,*pd2;
head1->next = head2->next =head;
pd1 = head1,pd2 = head2;
while(head)
{
if(head->val < x)
{
pd1->next = head;
pd1 = pd1->next;
}
else
{
pd2->next = head;
pd2 =pd2->next;
}
head = head->next;
}
pd2->next = NULL;
pd1->next = head2->next;
return head1->next;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode