LeetCode第21題,合併兩個有序鏈表. java
由於已經有序了,相似歸併排序中的合併同樣,操做不難,直接上代碼了.git
ListNode t = new ListNode(0); ListNode head = t; while(l1 != null && l2 != null) { if(l1.val < l2.val) { t.next = l1; l1 = l1.next; } else { t.next = l2; l2 = l2.next; } t = t.next; } while(l1 != null) { t.next = l1; l1 = l1.next; t = t.next; } while(l2 != null) { t.next = l2; l2 = l2.next; t = t.next; } return head.next;
這個能夠採用遞歸優化,並且不用額外設置一個移動的臨時結點t.首先對兩個指針進行判空操做,其中一個爲空的話返回另外一個,而後進行遞歸合併,首先建立一個head結點,進行賦值後遞歸合併next結點,將返回值賦給head.next,最後返回head.github
if(l1 == null) return l2; if(l2 == null) return l1; ListNode head = null; if(l1.val < l2.val) { head = l1; head.next = mergeTwoLists(l1.next, l2); } else { head = l2; head.next = mergeTwoLists(l1, l2.next); } return head;
github優化
碼雲指針