JavaScript LeetCode 21. Merge Two Sorted Lists
紀錄 LeetCode 21. Merge Two Sorted Lists 解題過程與思路
其實我一直很不會這種 ListNode
的題目,卡了很久還是決定看一下提示該怎麼寫,不然連起頭都沒辦法,有種感覺可以用遞迴處理,不過要寫清楚跳出點不然會無限迴圈
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} list1
* @param {ListNode} list2
* @return {ListNode}
*/
var mergeTwoLists = function (list1, list2) {
if (!list1) {
return list2;
}
if (!list2) {
return list1;
}
if (list1.val < list2.val) {
list1.next = mergeTwoLists(list1.next, list2);
return list1;
} else {
list2.next = mergeTwoLists(list1, list2.next);
return list2;
}
};
看了下整個思考邏輯就會是:
- 檢查兩個 list 是否為空,如果是的話就 return 另一個 list,因為原本的 list 已經排序好了
- 比較兩個 list 的 val 比較小的就往下走,然後再丟進遞回裡面繼續比較