LintCode : 链表划分

    xiaoxiao2021-04-17  31

    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; }
    转载请注明原文地址: https://ju.6miu.com/read-673637.html

    最新回复(0)