博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode148. Sort List
阅读量:6268 次
发布时间:2019-06-22

本文共 1793 字,大约阅读时间需要 5 分钟。

和数组里面的归并排序相同,用两个指针分别对应low high,递归进行归并排序然后merge把两个链表合在一起

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/class Solution {    ListNode* mergeSort(ListNode* head)    {        if (head->next == NULL)            return head;        ListNode* slow;        ListNode* fast;        slow = head;        fast = head;        while (fast->next&&fast->next->next)        {            slow = slow->next;            fast = fast->next->next;        }        ListNode* p;        p = slow->next;        slow->next = NULL;        ListNode* m;        ListNode* n;        m = mergeSort(head);        n = mergeSort(p);        return merge(m, n);    }    ListNode* merge(ListNode* p, ListNode* q)    {        ListNode* dummyNode;        dummyNode = new ListNode(0);        ListNode* pre;        pre = dummyNode;        while (p&&q)        {            if (p->val <= q->val)            {                pre->next = new ListNode(p->val);                pre = pre->next;                p = p->next;            }            else            {                pre->next = new ListNode(q->val);                pre = pre->next;                q = q->next;            }        }        while (p)        {            pre->next = new ListNode(p->val);            pre = pre->next;            p = p->next;        }        while (q)        {            pre->next = new ListNode(q->val);            pre = pre->next;            q = q->next;        }        ListNode* res;        res = dummyNode->next;        delete dummyNode;        return res;    }public:    ListNode* sortList(ListNode* head) {        if (head == NULL)            return NULL;        return mergeSort(head);    }};

 

转载于:https://www.cnblogs.com/legendcong/p/9721994.html

你可能感兴趣的文章
函数连续性与可导性
查看>>
linux下libevent安装
查看>>
用ip来获得用户所在地区信息
查看>>
卡尔曼滤波
查看>>
linux下面覆盖文件,如何实现直接覆盖,不提示
查看>>
CSS3阴影 box-shadow的使用和技巧总结
查看>>
Linux下高cpu解决方案
查看>>
SQL事务用法begin tran,commit tran和rollback tran的用法
查看>>
centos7 crontab笔记
查看>>
.Net AppDomain.CurrentDomain.AppendPrivatePath(@"Libs");
查看>>
【Unity3D基础教程】给初学者看的Unity教程(零):如何学习Unity3D
查看>>
Android Mina框架的学习笔记
查看>>
合并两个排序的链表
查看>>
rtf格式的一些说明,转载的
查看>>
REST Security with JWT using Java and Spring Security
查看>>
echarts学习总结(二):一个页面存在多个echarts图形,图形自适应窗口大小
查看>>
IIS7显示ASP的详细错误信息到浏览器
查看>>
使用fiddler对手机APP进行抓包
查看>>
exit和_exit的区别
查看>>
Javascript、Jquery获取浏览器和屏幕各种高度宽度(单位都为px)
查看>>