题目:
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
1.迭代:
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode prehead=new ListNode(-1);
ListNode pre=prehead;
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;
}
pre.next = l1 == null ? l2 : l1;
return prehead.next;
}
结果:执行用时:1 ms内存消耗:37.9 MB
2.递归:
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null){
return l2;
}
else if(l2==null){
return l1;
}
else if(l1.val<l2.val){
l1.next=mergeTwoLists(l1.next,l2);
return l1;
}
else{
l2.next=mergeTwoLists(l1,l2.next);
return l2;
}
}
结果:执行用时 :0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗 :38 MB, 在所有 Java 提交中击败了57.92%的用户