[LeetCode] 86. Partition List

来源:互联网 发布:交友聊天软件 编辑:程序博客网 时间:2024/06/18 18:17

[LeetCode] 86. Partition List


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的值,另一个负责链接大于等于x的值,最后把两个链表连起来。


class Solution {public:    ListNode* partition(ListNode* head, int x) {        ListNode* l = new ListNode(-1);        ListNode* r = new ListNode(-1);        ListNode* rh = r;        ListNode* lh = l;        ListNode* p = head;        while (p != NULL) {            if (p->val < x) {                l->next = p;                l = l->next;            } else {                r->next = p;                r = r->next;            }            p = p->next;        }        r->next = NULL;        l->next = rh->next;        return lh->next;    }};
0 0
原创粉丝点击