原題鏈接: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;
}