标签:style blog color strong div 代码 amp 时间
题目:给定两个已排序的链表,返回合并后的链表。
思路:将链表L2的每个结点插入到链表L1中,时间复杂度为O(m+n),m、n分别为两条链表的长度。
代码:
1 struct ListNode
2 {
3 int value;
4 ListNode *next;
5 ListNode(int v): value(v), next(NULL)
6 {
7 }
8 };
9
10 ListNode *mergeSortedList(ListNode *L1, ListNode *L2)
11 {
12 ListNode dummy(-1), *p1 = &dummy, *p2 = L2; //L1的辅助头结点dummy,因为可能在头部插入
13 dummy.next = L1;
14 while(p1->next != NULL && p2 != NULL) //停止条件,也包括了判断两个链表是否为空
15 {
16 if(p1->next->value >= p2->value)
17 {
18 L2 = p2->next;
19 p2->next = p1->next;
20 p1->next = p2;
21 p1 = p2;
22 p2 = L2;
23 }
24 else
25 {
26 p1 = p1->next;
27 }
28 }
29 if(p1->next == NULL) //L2可能还有未处理的结点,直接加在L1尾部即可
30 {
31 p1->next = p2;
32 }
33
34 return dummy.next;
35 }
标签:style blog color strong div 代码 amp 时间
原文地址:http://www.cnblogs.com/qieerbushejinshikelou/p/3917302.html