题解 | #单链表的排序#

单链表的排序

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

这道题就是简单的链表排序题,因为看到时间复杂度是O(nlogN),而数组排序最快也差不多O(nlogN),而且没有规定空间复杂度,所以这里直接遍历一次将所有指向节点的指针放入vector,根据val大小快排,然后根据大小重新将指针赋值。

 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
bool cmp1(ListNode* a,ListNode*b)
{
    return a->val<b->val;
}
class Solution {
public:
    /**
     * 
     * @param head ListNode类 the head node
     * @return ListNode类
     */

    ListNode* sortInList(ListNode* head) {
        // write code here
        
        
        ListNode* st = head;
        vector<ListNode*> aux;
        while(st!=NULL)
        {
            aux.push_back(st);
            st = st->next;
        }
        sort(aux.begin(),aux.end(),cmp1);
        ListNode* head1 = NULL;
        for(int i =0;i<aux.size();i++)
        {
            aux[i]->next = NULL;
            if(i==0)
                head1 = aux[i];
            else
                aux[i-1]->next = aux[i];
        }
        return head1;
    }
};
全部评论

相关推荐

kl_我是东山啊:《相关公司:阿里巴巴》
投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
01-14 12:08
门头沟学院 Java
神哥了不得:(非引流)1.既然发出来了简历,就稍微提一点点小建议,确实简历很不错了,练手项目可以换一些质量高的,工作内容,可以加上一些量化指标,比如第一条系统响应速度由多少变成多少,减少了百分之多少,第4条就很不错。2.广投,年前实习招募比较少了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务