题意:
给定一个节点数为n的无序单链表,对其按升序排序。
方法:
辅助数组快排
思路:首先,用一个辅助数组存储链表的值;再对数组进行快速排序;最后将排序后辅助数组的值赋给链表。
class Solution {
public:
ListNode* sortInList(ListNode* head) {
vector<int> v;//辅助数组
ListNode *p=head;
while(p!=nullptr){//遍历链表并将值存入数组
v.push_back(p->val);
p=p->next;
}
sort(v.begin(),v.end());//快排
p=head;
int i=0;
while(p){//遍历链表并覆盖为排序后的值
p->val=v[i++];
p=p->next;
}
return head;
}
};
时间复杂度:
空间复杂度:![]()



京公网安备 11010502036488号