LintCode : 链表划分

来源:互联网 发布:mac os安装windows 编辑:程序博客网 时间:2024/06/05 05:15

LintCode : 链表划分

题目

给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。

你应该保留两部分内链表节点原有的相对顺序。

样例

给定链表 1->4->3->2->5->2->null,并且 x=3

返回 1->2->2->4->3->5->null

思路

创建新链表,将小于x和大于等于x的值分别插入新链表。

代码

ListNode *partition(ListNode *head, int x) {    if(head == NULL)        return head;    ListNode *ans = (ListNode *)malloc(sizeof(ListNode));    ListNode *t = ans;    for(ListNode *p = head; p != NULL; p = p->next)    {        if(p->val < x)        {            ListNode *temp = new ListNode(p->val);            t->next = temp;            t = t->next;        }    }    for(ListNode *p = head; p != NULL; p = p->next)    {        if(p->val >= x)        {            ListNode *temp = new ListNode(p->val);            t->next = temp;            t = t->next;        }    }    return ans->next;}
0 0
原创粉丝点击