排序链表(leetcode148)c++
https://leetcode-cn.com/problems/sort-list/
//插入到vector中
//vector排序
//重新相连
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
#include <vector>
#include <algorithm>
bool cmp(const ListNode *a, const ListNode *b){
return a->val < b->val;
}
class Solution {
public:
ListNode* sortList(ListNode* head) {
//插入到vector中
//vector排序
//重新相连
std::vector<ListNode*> node_vec;
//--[1]--
ListNode *p;
p=head;
if(head==nullptr || head->next==nullptr){
return head;
}
while(p){
node_vec.push_back(p);
p=p->next;
}
//~
//--[2]--
std::sort(node_vec.begin(),node_vec.end(),cmp);
//~
//--[3]--
for(int i=1;i<node_vec.size();i++){
node_vec[i-1]->next = node_vec[i];
}
node_vec[node_vec.size()-1]->next = nullptr;
return node_vec[0];
//~
}
};