Leetcode 86 Partition List

来源:互联网 发布:lsv软件 编辑:程序博客网 时间:2024/04/27 00:48

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值得搬到前面

用两个链连接两种类型的结点,最后把大链加到小链后面,

注意把最后一位的指针断开,否则可能形成循环链表。

/** * 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* small=new ListNode(0);        ListNode* result=small;        ListNode* big=new ListNode(0);        ListNode* result2=big;        while(head!=NULL)        {            if(head->val>=x)            {                big->next=head;                big=big->next;            }            else            {                                small->next=head;                small=small->next;            }            head=head->next;        }        big->next=NULL;//把最后一位指针断开,否则会超时        small->next=result2->next;//合并        return result->next;    }};


1 0
原创粉丝点击