【LeetCode】21 合併兩個有序連結串列
阿新 • • 發佈:2018-11-21
將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。
示例:
輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
解題思路:
1 先根據兩個連結串列的第一個節點判斷並建立result的頭結點。
2 對兩個連結串列同時遍歷,判斷兩個連結串列的當前元素的大小,將小的接在result後面,直到兩個連結串列中的一個或兩個到了連結串列尾
3 判斷是否是還有一個連結串列中還有元素,若有,直接接在result後面。
// public class ListNode { // int val; // ListNode next; // ListNode(int x) { val = x; } // } class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode p = l1; ListNode q = l2; ListNode result; ListNode r; if (l1 == null && l2 == null) return null; if (l1 == null) return l2; if (l2 == null) return l1; if (p.val <= q.val){ result = new ListNode(p.val); r = result; p = p.next; } else{ result = new ListNode(q.val); r = result; q = q.next; } while (p != null && q != null){ while (p != null && q != null && p.val <= q.val){ r.next = p; r = r.next; p = p.next; } while (p != null && q != null && q.val <= p.val){ r.next = q; r = r.next; q = q.next; } } if (q == null) r.next = p; else r.next = q; return result; } }