题目描述

 

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

示例:

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

 

解题思路

 

首先找到新链表头节点,即两个链表头节点值较小的节点,然后以头节点所在链表为准,依次将另一个链表插入到对应位置中。

 

代码

 

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
12         if(l1 == NULL) return l2;
13         if(l2 == NULL) return l1;
14         if(l1->val > l2->val)
15             return mergeTwoLists(l2, l1);
16         ListNode* head = l1;
17         while(l1->next && l2){
18             if(l1->next->val > l2->val){
19                 ListNode* next = l2->next;
20                 l2->next = l1->next;
21                 l1->next = l2;
22                 l2 = next;
23             }
24             l1 = l1->next;
25         }
26         if(l2) l1->next = l2;
27         return head;
28     }
29 };

 

相关文章:

  • 2021-09-14
  • 2021-12-21
  • 2022-02-20
  • 2022-02-09
  • 2022-12-23
  • 2021-09-01
  • 2021-09-13
  • 2022-01-02
猜你喜欢
  • 2020-04-08
  • 2021-08-11
  • 2021-11-25
  • 2022-12-23
  • 2022-12-23
  • 2021-10-30
  • 2022-03-06
相关资源
相似解决方案