
迭代法
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode result = new ListNode(0);ListNode cur = result;while(list1!=null && list2!=null){ int val1 =list1.val;int val2 =list2.val;if(val1<val2){ListNode node = new ListNode(val1);cur.next=node;cur=cur.next;list1=list1.next;}else if(val1> val2){ListNode node = new ListNode(val2);cur.next=node;cur=cur.next;list2=list2.next;}else{ListNode node1 = new ListNode(val1);ListNode node2 = new ListNode(val2);cur.next=node1;cur=cur.next;cur.next=node2;cur=cur.next;list1=list1.next;list2=list2.next;}}while(list1 !=null){cur.next=list1;cur=cur.next;list1=list1.next;}while(list2!=null){cur.next=list2;cur=cur.next;list2=list2.next;}return result.next;}
递归法
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {if(l1 == null || l2 == null){return l1==null ? l2 : l1;}if(l1.val <=l2.val){l1.next=mergeTwoLists(l1.next,l2);return l1;}else{l2.next=mergeTwoLists(l1,l2.next);return l2;}}