[LintCode]165.合并两个排序链表
来源:互联网 发布:汉字笔顺软件下载 编辑:程序博客网 时间:2024/05/24 02:37
将两个排序链表合并为一个新的排序链表
样例
给出 1->3->8->11->15->null
,2->null
, 返回 1->2->3->8->11->15->null
。
第一种方法是采用递归,根据两个链表的头节点大小决定合并后链表的头节点,重复此步骤,典型的递归过程。
/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * } */class Solution {public: /** * @param ListNode l1 is the head of the linked list * @param ListNode l2 is the head of the linked list * @return: ListNode head of linked list */ ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { if(l1==NULL){ return l2; }else if(l2==NULL){ return l1; } ListNode *pMergeHead=NULL; if(l1->val<l2->val){ pMergeHead=l1; pMergeHead->next=mergeTwoLists(l1->next,l2); }else{ pMergeHead=l2; pMergeHead->next=mergeTwoLists(l1,l2->next); } return pMergeHead; }};
第二种方法是非递归方法,新建指针p作为新链表头结点,依次将两个链表头结点比较,比较结束后将值小的结点从原链表删除,头结点后移,并将此结点连入新链表
class Solution {public: /** * @param ListNode l1 is the head of the linked list * @param ListNode l2 is the head of the linked list * @return: ListNode head of linked list */ ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { if(l1==NULL){ return l2; }else if(l2==NULL){ return l1; } ListNode *pMergeHead=NULL; //取较小值作头结点 if(l1->val<l2->val){ pMergeHead=l1; l1=l1->next; }else{ pMergeHead=l2; l2=l2->next; } ListNode *p=pMergeHead;////? //开始遍历合并 while(l1!=NULL&&l2!=NULL){ if(l1->val<=l2->val){ p->next=l1; l1=l1->next; p=p->next; } else{ p->next=l2; l2=l2->next; p=p->next; } } if(l1!=NULL) p->next=l1; if(l2!=NULL) p->next=l2; return pMergeHead; }};
阅读全文
0 0
- [LintCode]165.合并两个排序链表
- LintCode 合并两个排序链表
- LintCode 合并两个排序链表
- LintCode -合并两个排序链表
- lintcode-合并两个排序链表 -165
- 合并两个排序链表(LintCode)
- LintCode:合并两个排序链表
- Lintcode 合并两个排序的链表
- lintcode ----合并两个排序链表
- lintcode,合并两个排序链表
- LintCode 合并两个排序链表
- 合并两个排序链表-LintCode
- lintcode 165 合并两个排序链表
- LintCode : 合并两个排序链表
- LintCode 165合并两个排序链表
- lintcode-合并两个排序链表
- 合并两个排序链表-LintCode
- LintCode 合并两个排序链表
- 如何使用Git上传项目代码到github——照做就好了
- 辅助工具 1
- nodejs 加载模块时,路径中的前缀“@”表示什么意思?
- 微信小程序配置顶部导航条标题颜色
- 剑指offer 16---单链表的逆置
- [LintCode]165.合并两个排序链表
- php json_encode的选项JSON_UNESCAPED_UNICODE
- IO流-第十七天
- 数据结构之链表
- {"JSON":"P"}
- 多线程之信号量Semaphore及原理
- 辅助工具 2
- 鼠标光标更改总结
- 基于VUE+THINKPHP的项目实践