示例 输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:输入:l1 = [], l2 = []
输出:[]
示例 3:输入:l1 = [], l2 = [0]
输出:[0]
代码(Java) class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) {this.val = val;}ListNode(int val, ListNode next) {this.val = val;this.next = next;}
}
// 方法一class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {if (list1 == null) {return list2;}if (list2 == null) {return list1;}if (list1.val < list2.val) {list1.next = mergeTwoLists(list1.next, list2);return list1;} else {list2.next = mergeTwoLists(list1, list2.next);return list2;}}
}
// 方法二
class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {if (list1 == null) {return list2;}if (list2 == null) {return list1;}ListNode p1 = list1;ListNode p2 = list2;ListNode root = null;ListNode temp = null;while (p1 != null && p2 != null) {if (p1.val <= p2.val) {if (root == null) {root = temp = new ListNode(p1.val, null);} else {temp.next = new ListNode(p1.val, null);temp = temp.next;}p1 = p1.next;} else {if (root == null) {root = temp = new ListNode(p2.val, null);} else {temp.next = new ListNode(p2.val, null);temp = temp.next;}p2 = p2.next;}}if (p1 != null) {temp.next = p1;}if (p2 != null) {temp.next = p2;}return root;}
}
// 方法三class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {if (list1 == null) {return list2;}if (list2 == null) {return list1;}ListNode head = new ListNode(-1);ListNode pre = head;ListNode l1 = list1;ListNode l2 = list2;while (l1 != null && l2 != null) {if (l1.val <= l2.val) {pre.next = l1;l1 = l1.next;} else {pre.next = l2;l2 = l2.next;}pre = pre.next;}if (l1 != null) {pre.next = l1;}if (l2 != null) {pre.next = l2;}return head.next;}
}