码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode - [4]Sort List

时间:2014-09-20 20:12:09      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   div   sp   log   

 

Sort a linked list in O(n log n) time using constant space complexity.

思路:采用归并排序或者快速排序

#include <iostream>
using namespace std;

struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x): val(x), next(NULL) {}
};

class Solution {
public:
    ListNode *sortList(ListNode *head) {
        if (!head || head->next == NULL) return head;

        ListNode *PA = head, *PB = head;        
        while (PA && PB && PB->next && PB->next->next) {
            PA = PA->next;            
            PB = PB->next->next;
        }
        PB = PA->next;
        PA->next = NULL;
        PA = head;

        PA = sortList(PA);    
        PB = sortList(PB);
        return mergeList(PA, PB);
    }

    ListNode *mergeList(ListNode *PA, ListNode *PB) {
        if (!PB) return PA;
        if (!PA) return PB;

        ListNode *merge, *head;
        if (PA->val < PB->val) {
            head = PA;
            PA = PA->next;
        }
        else {
            head = PB;
            PB = PB->next;
        }

        merge = head;
        while (PA && PB) {
            if (PA->val < PB->val) {
                merge->next = PA;
                PA = PA->next;
            }
            else {
                merge->next = PB;
                PB = PB->next;
            }
            merge = merge->next;
        }

        if (PA) merge->next = PA;
        if (PB) merge->next = PB;

        return head;
    }
};

int main(int argc ,char *argv[])
{
    ListNode *p, *q; 
    p = new ListNode(3);
    p->next = new ListNode(2);
    p->next->next = new ListNode(4);

    Solution *solution = new Solution();

    p = solution->sortList(p);
    while(p) {
        cout << p->val << endl;
        p = p->next;
    }
    return 0;
}

 

leetcode - [4]Sort List

标签:style   blog   color   io   os   ar   div   sp   log   

原文地址:http://www.cnblogs.com/zhuangzebo/p/3983594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!