给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。
示例 1:
输入:head = [4,2,1,3]
输出:[1,2,3,4]
示例 2:
输入:head = [-1,5,3,4,0]
输出:[-1,0,3,4,5]
示例 3:
输入:head = []
输出:[]
思路:
1、新建一个cur链表节点,指向给定链表的头结点,用于将链表元素放入数组;
2、排序数组;
3、新建一个cur2链表节点,指向给定链表的头结点,用于将排序后的数组重新倒入链表;
4、最后返回head即可。
class Solution {
public:
ListNode* sortList(ListNode* head) {
ListNode *cur = head ,*cur2 = head;
vector<int> nums;
while(cur != nullptr){
nums.push_back(cur->val);
cur = cur->next;
}
sort(nums.begin(),nums.end());
int i = 0;
while(cur2 != nullptr){
cur2->val = nums[i];
cur2 = cur2->next;
i++;
}
return head;
}
};