leetcode21 合并两个排好序的单链表
2016-02-18 19:17
316 查看
方法一:
方法二:递归
/** * 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) { ListNode* p1=l1; ListNode* p2=l2; if(l1==NULL){ return l2; } else if(l2==NULL){ return l1; } ListNode* cur=(l1->val<=l2->val?l1:l2); ListNode* head=cur; if(l1->val<=l2->val){ p1=p1->next; } else{ p2=p2->next; } while(p1&&p2){ if(p1->val<=p2->val){ cur->next=p1; p1=p1->next; } else{ cur->next=p2; p2=p2->next; } cur=cur->next; } while (p1){ cur->next = p1; p1 = p1->next; cur = cur->next; } while (p2){ cur->next = p2; p2 = p2->next; cur = cur->next; } return head; } };
方法二:递归
<pre name="code" class="cpp">ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (l1 == NULL) return l2; if (l2 == NULL) return l1; if (l1->val <= l2->val) { l1->next = mergeTwoLists(l1->next, l2); return l1; } else { l2->next = mergeTwoLists(l1, l2->next); return l2; } }
相关文章推荐
- Openstack基本命令
- C++中函数strcpy和strcpy_s(VS pro 2015)
- Doxygen
- 关于添加类目
- Android AudioTrack分析
- Ubuntu启动项
- eclipse tomcat部署solr
- 5.3--类的一种特殊的--成员方法--构造方法
- C语言一些常用的“位”操作函数
- Java基础了解
- code vs [网络流24题]最小路径覆盖问题
- Webpack的安装、配置与执行
- 必须掌握的八种排序(7-8)--归并排序,基数排序
- 理解MySQL——并行数据库与分区(Partition)
- 在Contos上部署MONO+JEXUS ,跑WEBAPI+StackExchange.Redis,并且实现.net的反射
- 测试运维名词
- 自学javascript笔记_自用_解析W3school的代码_JS对象
- PHP网站首页打不开的原因讲起
- 开灯问题
- Java,背景,组成