您的位置:首页 > 其它

【LeetCode】Partition List

2014-05-26 14:14 288 查看
题目描述:

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
.
考察的链表处理。如果在原链表上改变指向来获取最终答案会非常麻烦。比较简洁的方式是将x左边和右边的节点分别连进新的链表,最后将两个链表拼起来。
代码:

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