剑指offer之面试题17 :合并两个排序的链表
2016-07-09 15:59
525 查看
题目:
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路1:让两个指针分别指向两个链表,谁小就将当前节点尾插入新链表中
代码:
代码:
本文出自 “momo就是辣么萌” 博客,请务必保留此出处http://momo462.blog.51cto.com/10138434/1813602
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路1:让两个指针分别指向两个链表,谁小就将当前节点尾插入新链表中
代码:
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(pHead1==NULL) { return pHead2; } else if(pHead2==NULL) { return pHead1; } //两个指针 ListNode *newhead=NULL; ListNode *cur=NULL; ListNode *p1=pHead1; ListNode *p2=pHead2; ListNode *temp=NULL; //注意,如果是如下这种写法:有一个很大的漏洞 //看起来newhead的next是cur //但是当找到第二个数的时候,cur就指向别处 //newhead所在链表只有一个节点 /*while(p1!=NULL&&p2!=NULL) { if(p1->_data<=p2->_data) { cur=p1; p1=p1->_next; } else { cur=p2; p2=p2->_next; } if(newhead==NULL) { newhead=cur; } cur->_next=NULL; cur=cur->_next; }*/ while(p1!=NULL&&p2!=NULL) { if(p1->val<=p2->val) { temp=p1; p1=p1->next; } else { temp=p2; p2=p2->next; } if(newhead==NULL) { newhead=temp; cur=newhead; } else { cur->next=temp; cur=cur->next; } } if(p1!=NULL) { cur->next=p1; } else { cur->next=p2; } return newhead; } };思路二:通过递归,每次找出最小的元素,加入到新的链表的后面
代码:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { //终止条件 if(pHead1==NULL) { return pHead2; } else if(pHead2==NULL) { return pHead1; } ListNode *newhead=NULL; if(pHead1->val<=pHead2->val) { newhead =pHead1; newhead ->next=Merge(pHead1->next,pHead2); } else { newhead =pHead2; newhead ->next=Merge(pHead1,pHead2->next); } return newhead; }
本文出自 “momo就是辣么萌” 博客,请务必保留此出处http://momo462.blog.51cto.com/10138434/1813602
相关文章推荐
- 面试题: 栈和队列的OC实现.
- php面试题
- 剑指offer之面试题19:二叉树的镜像
- 剑指offer之面试题18:树的子结构
- "享元模式"-之Java,Android面试必问设计模式(9/9)
- 集合的补充(Map)
- php中级面试题
- [置顶] 年薪百万的年轻人都是怎样生活的?——脸书程序员的故事
- 纪念一下参加的腾讯阿里实习面试
- java各类面试题集合
- 牛客网程序员面试金典:1.2——原串翻转(java实现)
- 需要仔细读的书 (July 8, 2016)
- JAVA基础面试题(经典)
- iOS面试题四
- Java Android程序员软件开发知识:枚举的介绍,以及代码的编写教程。
- iOS面试题总结整理(附答案)
- 安卓手册 第二章(了解项目)
- 牛客网程序员面试金典:1.1确定字符互异(java实现)
- Android面试题1
- 【钜惠预告】黑马程序员暑期抢座活动即将上线