输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路:先比较链表1的头节点的值和链表2的头节点的值,将小的做为新链表的头节点,接下来继续比较。。(递归)
例如图:1比2小,作为新链表的头部,继续比较2和3。。。
当list1为null时,合并后即为list2。同样,当list2为null时,合并后即为list1。
/**
* @author yuan
* @date 2019/2/12
* @description
*/
public class 合并两个排序的链表 {
static class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public ListNode Merge(ListNode list1,ListNode list2) {
if (list1 == null) {
return list2;
}
if (list2 == null) {
return list1;
}
ListNode head = null;
if (list1.val < list2.val) {
head = list1;
head.next = Merge(list1.next, list2);
} else {
head = list2;
head.next = Merge(list1, list2.next);
}
return head;
}
}