【LeetCode】21. Merge Two Sorted Lists 解題報告
21. Merge Two Sorted Lists / Easy
Merge two sorted linked lists and return it as a sorted list. The list should be made by splicing together the nodes of the first two lists.
Example 1:
Input: l1 = [1,2,4], l2 = [1,3,4]
Output: [1,1,2,3,4,4]
Example 2:
Input: l1 = [], l2 = []
Output: []
Example 3:
Input: l1 = [], l2 = [0]
Output: [0]
Comstraints
- The number of nodes in both lists is in the range [0, 50].
- -100 <= Node.val <= 100
- Both l1 and l2 are sorted in non-decreasing order.
Solution 1: Vector
思路
很簡單,就是把兩個 List 的元素都放進 vector,排序後再接一條新的 List。
效能
Complexity
- Time Complexity: O((N+M)log(N+M))
- Space Complexity: O(N+M)
LeetCode Result
- Runtime: 9 ms
- Memory Usage: 15.1 MB
- https://leetcode.com/submissions/detail/531337188/
Code
1 | class Solution { |
Solution 2: LL Operation
思路
建一個新的頭,每次都進行比較,下一個就接上比較小的那一邊。
效能
Complexity
- Time Complexity: O(N+M)
- Space Complexity: O(1)
LeetCode Result
- Runtime: 4 ms
- Memory Usage: 14.8 MB
- https://leetcode.com/submissions/detail/532087713/
Code
1 | class Solution { |
Solution 3: Recursion
思路
很簡潔的遞迴寫法。由於最後回傳的節點是由小到大,也就是說 head 是最小的,
我們可以比較出比較小的節點作為頭,接著把下一個節點當作 head 和另一條 List 再合併一次,這次也會回傳比較小的那邊。
最後就連起來了。
效能
Complexity
- Time Complexity: O(N+M)
- Space Complexity: O(N+M)
LeetCode Result
- Runtime: 4 ms
- Memory Usage: 14.8 MB
- https://leetcode.com/submissions/detail/532086451/
Code
1 | class Solution { |