Sort List leetcode
来源:互联网 发布:js从数组中移除元素 编辑:程序博客网 时间:2024/06/16 06:09
实现单链表排序 时间复杂度要求为 nlogn
由于是单链表,用快速排序无法往前面遍历(双向链表可以考虑),这里我们用到归并排序
代码如下:
<span style="font-size:18px;">/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *sortList(ListNode *head) { if(head==NULL||head->next==NULL) return head; ListNode *onestep=head; ListNode *twostep=head;//定义两个指针,一个走一步,一个走两步,用来找到中间节点 // ListNode *first=NULL; // ListNode *second=NULL; while(twostep->next!=NULL&&twostep->next->next!=NULL) { onestep=onestep->next; twostep=twostep->next->next; } //此时onestep指向了整个链表的中间,如果偶数那么两边均衡,如果为奇数,指向正中间需要从onestep出分开 twostep=onestep; onestep=onestep->next;//此时onestep指向后半部分 twostep->next=NULL;//将前半部分和后半部分分开 twostep=sortList(head); onestep=sortList(onestep); return meger(twostep,onestep); } ListNode *meger(ListNode *first,ListNode *second) { ListNode *result; ListNode *p; if(first==NULL) return second; if(second==NULL) return first; //初始化result if(first->val<second->val){ result=first; first=first->next; } else { result=second; second=second->next; } p=result; while(first!=NULL&&second!=NULL) { if(first->val<second->val) { p->next=first; first=first->next; } else { p->next=second; second=second->next; } p=p->next; } if(first!=NULL) p->next=first; else if(second!=NULL) p->next=second; return result; } };</span>
0 0
- [leetcode][list][sort] Sort List
- Insertion Sort List | leetcode
- Leetcode: Insertion Sort List
- [LeetCode] Insertion Sort List
- Leetcode: Insertion Sort List
- Leetcode: Sort List
- Sort List | leetcode
- leetcode-Sort List
- leetcode-Insertion Sort List
- LeetCode题解:Sort List
- leetcode 134: Sort List
- [LeetCode]Sort List
- [LeetCode]Insertion Sort List
- [LeetCode] Sort List
- 【LeetCode】Insertion Sort List
- leetCode - Sort List
- LeetCode | Insertion Sort List
- LeetCode - Insertion Sort List
- 南阳理工746整数划分(区间dp)
- SD卡中FAT32文件格式快速入门(图文详细介绍)
- 设计模式-单例模式反思
- JNI/NDK开发指南(二)——JVM查找java native方法的规则
- 不同电脑之间share鼠标键盘
- Sort List leetcode
- Myeclipse中修改jsp默认模板
- HDU 1070 一道结构体的题目
- UNIX环境高级编程笔记-8进程控制
- leetcode:Triangle
- Ubuntu 12.04更新源
- Android 正则表达式验证手机和邮箱格式是否正确
- 38来电归属地的bug的解决
- cefglue Flash