【力扣】排序链表

 🔥博客主页: 我要成为C++领域大神

🎥系列专栏【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】

❤️感谢大家点赞👍收藏⭐评论✍️

本博客致力于分享知识,欢迎大家共同学习和交流。

10f3f804036d438784915f2c6f94fb5d.gif

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表

示例 1:

 

25dd83384159dbd82427e02c3f6a00cc.png

输入:head = [4,2,1,3]
输出:[1,2,3,4]

示例 2:

 

761e188119cdb861c694d00a2e577f86.png

输入: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;
    }
};

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值