牛客题霸 单链表的选择排序 C++题解/答案

题目描述

给定一个无序单链表,实现单链表的选择排序(按升序排序)。

题解:

不可能手写排序,这辈子不可能手写排序。。
基础的链表操作,将链表内的数据存到vector内,然后用sort排序,再将vector内的数据存会数组即可

代码:

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

class Solution {
   
public:
    /** * * @param head ListNode类 the head node * @return ListNode类 */
    ListNode* sortInList(ListNode* head) {
   
        if(!head||!head->next)return head;
        vector<int>vec;
        ListNode牛客题霸 单链表的选择排序 C++题解/答案 * p=head;
        while(p!=NULL)
            {
   
                vec.push_back(p->val);
            p=p->next;
            }
        sort(vec.begin(),vec.end());
        p=head;
        int k=0;
        while(p!=NULL)
        {
   
            p->val=vec[k];
            k++;
            p=p->next;
        }    
        return head;
    }
};