leetcode-21 合併兩個有序連結串列(MergeTwoSortedLists)-java
阿新 • • 發佈:2019-01-10
題目:合併兩個有序連結串列
將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。
public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode listNode = new ListNode(0); ListNode firstNode = listNode; while (l1 != null && l2 != null) { if (l1.val <= l2.val) { listNode.next= l1; l1 = l1.next; } else { listNode.next = l2; l2 = l2.next; } listNode = listNode.next; } while (l1 != null) { listNode.next = l1; l1 = l1.next; listNode = listNode.next; } while (l2 != null) { listNode.next= l2; l2 = l2.next; listNode = listNode.next; } return firstNode.next; }
變數註釋:
firstNode //相當於頭節點
思路:
這個題目就是歸併排序中的歸併操作,將兩個有序陣列(連結串列)合併為一個有序的陣列。
//第一個while迴圈,將 l1 和 l2 進行比較,誰小誰就合併到 listNode,直到 l1 或者 l2 為空
//第二個while迴圈和第三個while迴圈,將 l1 或者 l2 剩下的節點合併到 listNode
最後返回的是 firstNode.next //頭節點是不需要的