zoukankan      html  css  js  c++  java
  • 148. Sort List -- 时间复杂度O(n log n)

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

    归并排序

    struct ListNode {
        int val;
        ListNode *next;
        ListNode(int x) : val(x), next(NULL) {}
    };
    
    ListNode *sortList(ListNode *head) {
        if (head==NULL || head->next == NULL){
            return head;
        }
        //find the middle place
        ListNode *p1=head, *p2=head->next; 
    
        while(p2 && p2->next){
            p1 = p1->next;
            p2 = p2->next->next;
        }
        p2 = p1->next;
        p1->next = NULL;
        return mergeTwoLists(sortList(head), sortList(p2));
    }
    
    
    ListNode *mergeTwoLists(ListNode* head1, ListNode* head2){
        ListNode *p1 = head1,  *p2=head2;
        static ListNode dummy(0);
    
        ListNode *tail = &dummy;
    
        while(p1 && p2){
            if(p1->val < p2->val){
                tail->next = p1;
                p1 = p1->next;
            }else{
                tail->next = p2;
                p2 = p2->next;
            }
            tail = tail->next;
        }
        if (p1) tail->next = p1;
        if (p2) tail->next = p2;
    
        return dummy.next;
    }
  • 相关阅读:
    gson和fastjson
    Hive和HBase的区别
    mac 比较两个文件
    mysql 查找在另一张表不存在的数据
    mysql 根据一张表更新另一张表
    shell调试
    目标
    百度在线面试总结
    20170109| javascript记录
    php-fpm问题
  • 原文地址:https://www.cnblogs.com/argenbarbie/p/5791279.html
Copyright © 2011-2022 走看看