单链表的排序

单链表的排序

http://www.nowcoder.com/questionTerminal/f23604257af94d939848729b1a5cda08

/**
 * struct ListNode {
 *    int val;
 *    struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 the head node
     * @return ListNode类
     */
    ListNode* sortInList(ListNode* head) {
        // write code here
        vector<ListNode*> v;
        while (head != nullptr) {
            v.emplace_back(head);
            head = head->next;
        }
        auto cmp = [](const ListNode* l1, const ListNode* l2) {
            return l1->val < l2->val;
        };
        sort(v.begin(), v.end(), cmp);

        for (int i = 0; i < v.size() - 1; i++) {
            v[i]->next = v[i + 1];
        }
        // 注意要把最后一个元素的next赋值为nullptr,否则会形成环
        v[v.size() - 1]->next = nullptr;
        return v[0];
    }
};
全部评论

相关推荐

04-11 23:51
门头沟学院 Java
坚定的芭乐反对画饼_许愿Offer版:人人都能过要面试干嘛,发个美团问卷填一下,明天来上班不就好了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务