合并两个排序的链表
来源:互联网 发布:sql server win7 编辑:程序博客网 时间:2024/06/13 03:45
合并两个排序的链表
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
分析
两种思路:1.假设两个链表的长度分别为n和m,以链表1为基准,将链表2的所有元素插入到链表1,这种实现方式需要遍历链表1,总共需要m次,所以时间复杂度为O(mn);
2.从头开始比较两个链表中元素的大小,小的元素取出形成新链表的元素,只需要O(m+n)的时间复杂度,但是需要额外空间,即空间复杂度为O(m + n).
现给出第二种解法的代码实现:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2){ ListNode dazzy(-1); //用于保存新链表的头节点; if(pHead1 == NULL) return pHead2; if(pHead2 == NULL) return pHead1; dazzy.next = (pHead1->val)>(pHead2->next)?pHead2:pHead1; ListNode* node = &dazzy; while(pHead1!=NULL && pHead2 != NULL){ if(pHead1->val<pHead2->val) { node->next = pHead1; pHead1 = pHead1->next; }else{ node->next = pHead2; pHead2 = pHead2->next; } node = node->next; } if(pHead1!=NULL) node->next = pHead1; if(pHead2!=NULL) node->next = pHead2; return dazzy.next;}
阅读全文
0 0
- 两个已排序链表的合并
- 两个已排序链表的合并
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序了的链表
- 合并两个排序的链表
- 23.合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- 合并两个排序的链表
- bug宝典Python篇 no 'moz:firefoxOptions.binary' capability provided
- Spring的bean管理(注解)
- C++中实例化一个类的方式
- 第十章 时间序列
- Thinking in java-33 Collection & Map
- 合并两个排序的链表
- Android Studio之package org.junit does not exist解决办法
- 【立体视觉】双目立体标定与立体校正
- js给所有td加上悬浮显示(title)
- Mycat入门教程
- android studio全局搜索 快捷键
- iOS 开发 小技巧
- 阿里云https证书安装
- Go web 服务简单使用