剑指offer_【16】合并两个排序的链表

1.题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

例:

链表1:  1  ---->  3  ---->  5  ----> 8

链表2:  2  ---->  4 ---->   6 ---->  7

合并结果:

1 ----> 2 ----> 3 ----> 4 ----> 5 ----> 6 ----> 7  ----> 8

2.解题思路

  1. 判断有没有ListNode是空的,如果有则返回另一个

  2. 递归实现,如果List1.val<list2.val,pMergeHead = list1,否则pMergeHead = list2,递归直到两个ListNode都为空

3.代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
public class ListNode {
int val;
ListNode next = null;

ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1==null){
return list2;
}else if(list2==null){
return list1;
}
ListNode pMergeHead = null;
if(list1.val<list2.val){
pMergeHead = list1;
pMergeHead.next = Merge(list1.next,list2);
}else{
pMergeHead = list2;
pMergeHead.next = Merge(list1,list2.next);
}
return pMergeHead;
}
}
文章目录
  1. 1. 1.题目描述
  2. 2. 2.解题思路
  3. 3. 3.代码
| 139.6k