解题思路
- 用 vector<ListNode*> 先存储链表中各个节点
- 使用 sort 对 vector 进行排序
- 将 vector 中的 ListNode 按顺序串联起来
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
ListNode* sortInList(ListNode* head) {
vector<ListNode*> nodes;
ListNode* pNode = head;
while (pNode) {
nodes.emplace_back(pNode);
pNode = pNode->next;
}
auto cmp = [](ListNode* a, ListNode* b) -> bool {
return a->val < b->val;
};
sort(nodes.begin(), nodes.end(), cmp);
for (int i = 0; i < nodes.size() - 1; ++i) {
nodes[i]->next = nodes[i + 1];
}
nodes[nodes.size() - 1]->next = nullptr;
return nodes[0];
}
};