21. Merge Two Sorted Lists leetcode(lists)
2016-11-29 22:22
281 查看
Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
方法一、多开辟了一个链表
方法二、直接在第一个链表上进行修改,最终返回第一个链表
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
方法一、多开辟了一个链表
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(NULL == l1 || NULL == l2) { return (NULL==l1)?l2:l1; } ListNode l3(0); //必须使用这种定义,如果写成ListNode* l3会超时,必须带头节点 ListNode* p1; ListNode* p2; ListNode* p3; p1 = l1; p2 = l2; p3 = &l3; while(p1 && p2) { ListNode* tmp = (ListNode*)malloc(sizeof(ListNode)); if(p1->val <= p2->val) { cout<<"1p1 "<<p1->val<<endl; tmp->val = p1->val; tmp->next = NULL; p1 = p1->next; } else { cout<<"1p2 "<<p2->val<<endl; tmp->val = p2->val; tmp->next = NULL; p2 = p2->next; } p3->next = tmp; p3 = tmp; } while(p1) { cout<<"2p1"<<p1->val<<endl; ListNode* tmp = (ListNode*)malloc(sizeof(ListNode)); tmp->val = p1->val; tmp->next = NULL; p3->next = tmp; p3 = tmp; p1 = p1->next; } while(p2) { cout<<"2p2"<<p2->val<<endl; ListNode* tmp = (ListNode*)malloc(sizeof(ListNode)); tmp->val = p2->val; tmp->next = NULL; p3->next = tmp; p3 = tmp; p2 = p2->next; } return l3.next; //因为带头节点所以必须返回l3.next }
方法二、直接在第一个链表上进行修改,最终返回第一个链表
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(NULL == l1 || NULL == l2) { return (NULL==l1)?l2:l1; } ListNode* p1= l1; ListNode* pre = p1; ListNode* p2 = l2; while(p1 && p2) { ListNode* tmp = (ListNode*)malloc(sizeof(ListNode)); if(p1->val <= p2->val) { pre = p1; p1 = p1->next; } else { if(pre == p1) //注意当pre==p1时表示要将p2的节点插入p1的头节点 { tmp->val = p2->val; tmp->next = pre; pre = tmp; l1 = pre; p2 = p2->next; } else { tmp->val = p2->val; pre->next = tmp; tmp->next = p1; p2 = p2->next; pre = tmp; } } } while(p2) { ListNode* tmp = (ListNode*)malloc(sizeof(ListNode)); tmp->val = p2->val; tmp->next = NULL; pre->next = tmp; pre = tmp; p2 = p2->next; } return l1; }
相关文章推荐
- LeetCode 21. Merge Two Sorted Lists
- LeetCode-Easy部分中标签为LinkedList 21. Merge Two Sorted Lists
- LeetCode 21. Merge Two Sorted Lists
- 21. Merge Two Sorted Lists leetcode Python 2016 new Season
- 【LeetCode】21. Merge Two Sorted Lists
- LeetCode 21. Merge Two Sorted Lists
- leetcode 21. Merge Two Sorted Lists 两个单向链表合并 指针与解指针
- leetcode21. Merge Two Sorted Lists
- LeetCode: 21. Merge Two Sorted Lists
- LeetCode-21. Merge Two Sorted Lists
- leetcode21. Merge Two Sorted Lists
- [leetcode] 21. Merge Two Sorted Lists 解题报告
- [LeetCode]21. Merge Two Sorted Lists
- LeetCode21. Merge Two Sorted Lists
- leetcode解题报告21. Merge Two Sorted Lists
- LeetCode 21. Merge Two Sorted Lists 两个有序列表合成一个
- LeetCode 21. Merge Two Sorted Lists 题解 —— Java
- Leetcode题解 21. Merge Two Sorted Lists
- LeetCode题解(Week2):21. Merge Two Sorted Lists
- leetcode_效率题解_[python/C++]_21. Merge Two Sorted Lists(合并2个有序链表)