zoukankan      html  css  js  c++  java
  • leetcode[148]Sort List

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

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
    ListNode *merge(ListNode *left,ListNode *right)
    {
        ListNode *newl=new ListNode(0);
        ListNode *p=newl;
        while(left&&right)
        {
            if(left->val<=right->val)
            {
               p->next=left;
               left=left->next;
            }
            else
            {
                p->next=right;
                right=right->next;
            }
            p=p->next;
        }
        if(left)p->next=left;
        if(right)p->next=right;
        return newl->next;
    }
    ListNode *mergeSort(ListNode *head)
    {
        if(head==NULL||head->next==NULL)return head;
        ListNode *slow=head;
        ListNode *fast=head;
        ListNode *pre=NULL;
        while(fast&&fast->next)
        {
            fast=fast->next->next;
            pre=slow;
            slow=slow->next;
        }
        pre->next=NULL;
        ListNode *left=mergeSort(head);
        ListNode *right=mergeSort(slow);
        return merge(left,right);
    }
        ListNode *sortList(ListNode *head) {
            if(head==NULL||head->next==NULL)return head;
            return mergeSort(head);
        }
    };
  • 相关阅读:
    [转] Spring
    测试公式
    lexicalized Parsing
    MLN Alchemy
    Pedro domingos
    MLE & MAP
    Learning
    ProbCog mlnlearn的探索
    MLN 讨论 —— inference
    Mathjax与LaTex公式简介
  • 原文地址:https://www.cnblogs.com/Vae1990Silence/p/4280740.html
Copyright © 2011-2022 走看看