leetcode算法題--對鏈表進行插入排序

原題鏈接:https://leetcode-cn.com/problems/insertion-sort-list/

1、map

ListNode* insertionSortList(ListNode* head) {
    multimap<int,ListNode*> m;
    while(head!=NULL){
        m.insert(pair<int,ListNode*>(head->val,head));
        head=head->next;
    }
    ListNode *pre=new ListNode;
    ListNode *p=pre;
    for(auto iter=m.begin();iter!=m.end();iter++){
        p->next=iter->second;
        p=p->next;
    }
    p->next=NULL;
    return pre->next;
}

2、插入排序

ListNode* insertionSortList(ListNode* head) {
    ListNode *dummy=new ListNode(INT_MIN);
    ListNode *p=dummy,*pre;
    while(head!=NULL){
        while(p!=NULL&&head->val>=p->val){
            pre=p;
            p=p->next;
        }
        ListNode *tmp=head;
        head=head->next;
        tmp->next=pre->next;
        pre->next=tmp;
        p=dummy;
    }
    return dummy->next;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章