🔥博客主页: 我要成为C++领域大神
🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】
❤️感谢大家点赞👍收藏⭐评论✍️
本博客致力于分享知识,欢迎大家共同学习和交流。
给你链表的头结点 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 = []
输出:[]
C++自带的sort函数(投机取巧)
流程:
1、创建一个vector类型的容器,用来存放链表节点的值
2、遍历链表,同时将链表每个节点的值push到vector中
3、利用STL里的sort函数,对vector进行升序排列
4、再次遍历链表,同时将vector的值赋值给对应节点
代码实现:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* sortList(ListNode* head) {
if (head == nullptr)
return nullptr;
// 创建vector容器
vector<int> v;
// 遍历链表
ListNode* p = head;
while (p != nullptr) {
v.push_back(p->val);
p = p->next;
}
// sort方法升序排列v
sort(v.begin(), v.end());
// 将升序的数值赋值给链表
p = head;
for (int i = 0; i < v.size(); ++i) {
p->val = v[i];
p = p->next;
}
return head;
}
};