Merge Two Sorted Lists
2016-05-20 09:54
603 查看
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1==NULL&&l2==NULL) return NULL; if(l1==NULL) return l2; if(l2==NULL) return l1; ListNode* head; if(l1->val<=l2->val) { head=l1; l1=l1->next; } else { head=l2; l2=l2->next; } ListNode* p=head; while(l1&&l2) { ListNode* k=(l1->val<=l2->val)?l1:l2; p->next=k; p=p->next; if(k==l1) l1=l1->next; else l2=l2->next; } if(l1) p->next=l1; if(l2) p->next=l2; return head; } };
这样写很啰嗦,可以考虑申请一个头结点,然后对l1、l2的操作就可以合并在一起。
递归方法如下:
class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(!l1) return l2; else if(!l2) return l1; ListNode* head=NULL; if(l1->val<=l2->val) { head=l1; head->next=mergeTwoLists(l1->next,l2); } else { head=l2; head->next=mergeTwoLists(l1,l2->next); } return head; } };
相关文章推荐
- 【Error】 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
- Elasticsearch DSL语句之连接查询
- 诗歌四
- C语言(调试绝活)
- 23种设计模式(15)--State模式
- Activity
- lightoj 1038 Race to 1 Again
- 58同城二手市场个人信息的采集分析
- 课堂作业二 PAT1025 反转链表
- 《学习OpenCV》课后习题解答1
- java synchronized详解
- 快速消费品行业前景及进入门槛
- 页面获取MySQL时间转换(个人菜鸟笔记)
- Java的接口和抽象类
- Java的接口和抽象类
- NYOJ 92 图像有用区域
- Java中Json对象序列化与反序列化工具类
- 甲骨文:Android 是破坏开源的罪犯!
- 甲骨文:Android 是破坏开源的罪犯!
- nexus7 恢复出厂设置后无法激活的问题