合并两个有序链表。
解法一 迭代
遍历两个链表。
publicListNodemergeTwoLists(ListNodel1, ListNodel2) { ListNodeh=newListNode(0); ListNodeans=h; while (l1!=null&&l2!=null) { if (l1.val<l2.val) { h.next=l1; h=h.next; l1=l1.next; } else { h.next=l2; h=h.next; l2=l2.next; } } if(l1==null){ h.next=l2; } if(l2==null){ h.next=l1; } returnans.next; }
时间复杂度:O(m + n)。
空间复杂度:O(1)。
解法二 递归
参考这里
ListNodemergeTwoLists(ListNodel1, ListNodel2) { if(l1==null) returnl2; if(l2==null) returnl1; if(l1.val<l2.val) { l1.next=mergeTwoLists(l1.next, l2); returnl1; } else { l2.next=mergeTwoLists(l2.next, l1); returnl2; } }
时间复杂度:
空间复杂度:
总
递归看起来,两个字,优雅!但是关于递归的时间复杂度,空间复杂度的求法,先留个坑吧。