题解 | #单链表的排序#

单链表的排序

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

题意:
        给定一个节点数为n的无序单链表,对其按升序排序。

方法:
辅助数组快排

思路:
        首先,用一个辅助数组存储链表的值;
        再对数组进行快速排序;
         最后将排序后辅助数组的值赋给链表。



class Solution {
public:
    
    ListNode* sortInList(ListNode* head) {
        vector<int> v;//辅助数组
        ListNode *p=head;
        while(p!=nullptr){//遍历链表并将值存入数组
            v.push_back(p->val);
            p=p->next;
        }
        sort(v.begin(),v.end());//快排
        p=head;
        int i=0;
        while(p){//遍历链表并覆盖为排序后的值
            p->val=v[i++];
            p=p->next;
        }
        return head;
    }
};


时间复杂度:
空间复杂度:


全部评论

相关推荐

点赞 评论 收藏
分享
06-07 17:17
嘉兴学院 教师
心爱的idea:你孩
点赞 评论 收藏
分享
码农索隆:想看offer细节
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务