Sort List
来源:互联网 发布:java 1.7 32位官网 编辑:程序博客网 时间:2024/04/29 21:09
Sort a linked list in O(n log n) time using constant space complexity
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: int listLength(ListNode *head) { int len = 0; while(head){ ++len; head=head->next; } return len; } ListNode* findMiddlePre(ListNode *head,int len) { int x = len/2; while(--x){ head=head->next; } return head; } ListNode* merge(ListNode* head1,ListNode *head2) { ListNode *temp=NULL,*p=head1,*q=head2,*pre1=NULL; while(p && q){ if(p->val < q->val){ pre1=p; p=p->next; }else { temp =q->next; q->next = p; if(pre1){ pre1->next = q; pre1=q; }else{ head1=q; pre1=q; } q = temp; } } if(q) pre1->next=q; return head1; } ListNode *sortList(ListNode *head) { int len = listLength(head); if(len==1 || len==0) return head; ListNode *middlePre = findMiddlePre(head,len); ListNode *middle = middlePre->next; middlePre->next=NULL; head = sortList(head); middle = sortList(middle); head = merge(head,middle); return head; } };
0 0
- list sort
- list sort
- Sort List
- Sort List
- list - sort
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- javascript指南-类和对象
- 四种常见的 POST 提交数据方式
- 第十三周项目6-体验文件操作 4
- 学习Unity3D第五天之脚本入门(选择结构和循环结构)。
- 实验二 数据结构——线性表的实验
- Sort List
- 十六进制字符串和byte数组的相互转化
- Flume-NG中用到的一些好的文章
- 递推 数字三角形
- Reverse Words in a String
- 学习Unity3D第六天之脚本入门例题详解。
- hdu 5091 Beam Cannon(线段树)
- arm指令MOV和ldr的区别
- fabric --- Python中的批量远程管理和部署工具