1. 程式人生 > 實用技巧 >牛客題霸 單鏈表的選擇排序 C++題解/答案

牛客題霸 單鏈表的選擇排序 C++題解/答案

牛客題霸 單鏈表的選擇排序 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;
    }
};