合并俩个排序的链表
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路:
创建一个新的链表结点,将俩个单调递增的链表进行比较,将数值小的那一个链接到新结点之后,而新节点的指针指向的结点即通过不断递归获得新的数值小的结点。
除此之外要注意相等,某链表是否为空等情况。
1 package 合并递增链表; 2 3 class ListNode { 4 int val; 5 ListNode next = null; 6 7 ListNode(int val) { 8 this.val = val; 9 } 10 } 11 12 public class Solution { 13 public ListNode Merge(ListNode list1, ListNode list2) { 14 // 特殊情况 15 if (list1 == null) { 16 return list2; 17 18 } else if (list2 == null) { 19 return list1; 20 } 21 22 ListNode temp = null; 23 if (list1.val <= list2.val) { //比较俩个结点的值 24 temp = list1; 25 // 递归 26 temp.next = Merge(list1.next, list2); 27 } else { 28 temp = list2; 29 temp.next = Merge(list1, list2.next); 30 31 } 32 33 return temp; 34 35 } 36 }