码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode21:合并两个有序链表

时间:2020-06-27 11:53:17      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:lis   返回   申请   ext   def   来源   链表   node   return   

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

 

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

 

很简单的循环判断,但是申请了一个dummyhead的空间。

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode() : val(0), next(nullptr) {}
 7  *     ListNode(int x) : val(x), next(nullptr) {}
 8  *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 9  * };
10  */
11 class Solution {
12 public:
13     ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
14         ListNode *combine = new ListNode;
15         ListNode *dummyhead=combine;
16         while(l1!=NULL && l2!=NULL){
17             if(l1->val<l2->val){
18                 combine->next=l1;
19                 l1=l1->next;
20                 combine=combine->next;
21             }
22             else{
23                 combine->next=l2;
24                 l2=l2->next;
25                 combine=combine->next;
26             }
27         }
28         while(l1!=NULL){
29             combine->next=l1;
30             l1=l1->next;
31             combine=combine->next;
32         }
33         while(l2!=NULL){
34             combine->next=l2;
35             l2=l2->next;
36             combine=combine->next;
37         } 
38     return dummyhead->next;}
39 };

最后一个链表循环完毕后其实可以直接把第二个链表接在后面,不需要再循环了。

 

或者采用递归的方法,需要消耗更多的栈空间。

 1 class Solution {
 2 public:
 3     ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
 4         if (l1 == nullptr) {
 5             return l2;
 6         } else if (l2 == nullptr) {
 7             return l1;
 8         } else if (l1->val < l2->val) {
 9             l1->next = mergeTwoLists(l1->next, l2);
10             return l1;
11         } else {
12             l2->next = mergeTwoLists(l1, l2->next);
13             return l2;
14         }
15     }
16 };
17 
18 作者:LeetCode-Solution
19 链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/he-bing-liang-ge-you-xu-lian-biao-by-leetcode-solu/
20 来源:力扣(LeetCode)
21 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

LeetCode21:合并两个有序链表

标签:lis   返回   申请   ext   def   来源   链表   node   return   

原文地址:https://www.cnblogs.com/rookiez/p/13197660.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!