leetcode 86 链表partition

2018-02-16  本文已影响3人  吃个小烧饼

找不到合适的词,就像qsort用一个叫partition的词一样,有没有合适的翻译呢,分裂?分堆?

做法也不难,就是两个链表,一个存小的,一个存大的,这样的好处就是在遍历原链表的时候不会破坏原始结构。

那么代码如下:

ListNode* partition(ListNode* head, int x) {
    ListNode *less = new ListNode(0);
    ListNode *more = new ListNode(0);
    ListNode *l = less, *m = more;
    ListNode *cur = head;
    while(cur) {
        if(cur->val < x) {
            l = cur;
            l = l->next;
        } else {
            m = cur;
            m = m->next;
        }
        cur = cur->next;
    }
    l->next = more -> next;  //唯一要注意的,more是m的head,指向它就好了
    m->next = nullptr;
    return less->next;
}
上一篇 下一篇

猜你喜欢

热点阅读