Partition List

来源:互联网 发布:谷歌seo 编辑:程序博客网 时间:2024/06/06 15:37

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,最后连接起来。 看了别人的答案,突然发现safeguard写成object instance更方便一些。

struct ListNode {int val;ListNode *next;ListNode(int x) :val(x), next(NULL) {}};class Solution {public:    ListNode *partition(ListNode *head, int x) {        ListNode head1(0),head2(0);        ListNode *node1=&head1, *node2=&head2;        while(head){        if (head->val<x)        node1=node1->next=head;        else        node2=node2->next=head;        head=head->next;        }        node2->next=NULL;        node1->next=head2.next;        return head1.next;    }};


0 0