LeetCode Everyday:坚持价值投资,做时间的朋友!!!
题目:
将两个升序链表合并为一个新的升序
链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
- 示例 1:
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
代码
方法一: 递归 题解
执行用时:56 ms, 在所有 Python3 提交中击败了18.41%的用户
内存消耗:13.7 MB, 在所有 Python3 提交中击败了7.14%的用户
# Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if l1 and l2:
if l1.val > l2.val: l1, l2 = l2, l1
l1.next = self.mergeTwoLists(l1.next, l2)
return l1 or l2
"""
For Example: input: l1:1->2->4 l2:1->3->4
output: 1->1->2->3->4->4
"""
l1 = ListNode(1)
l1.next = ListNode(2)
l1.next.next = ListNode(4)
l2 = ListNode(1)
l2.next = ListNode(3)
l2.next.next = ListNode(4)
solution = Solution()
result = solution.mergeTwoLists(l1, l2)
print('输出为:%d->%d->%d->%d->%d->%d' % \
(result.val, result.next.val, result.next.next.val, result.next.next.next.val,\
result.next.next.next.next.val, result.next.next.next.next.next.val))
方法二: 递循环遍历 题解
执行用时:44 ms, 在所有 Python3 提交中击败了79.61%的用户
内存消耗:13.8 MB, 在所有 Python3 提交中击败了7.14%的用户
# Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
dummy = ListNode(0)
move = dummy
while l1 and l2:
if l1.val <= l2.val:
move.next = l1
l1 = l1.next
else:
move.next = l2
l2 = l2.next
move = move.next
move.next = l1 if l1 else l2
return dummy.next
"""
For Example: input: l1:1->2->4 l2:1->3->4
output: 1->1->2->3->4->4
"""
l1 = ListNode(1)
l1.next = ListNode(2)
l1.next.next = ListNode(4)
l2 = ListNode(1)
l2.next = ListNode(3)
l2.next.next = ListNode(4)
solution = Solution()
result = solution.mergeTwoLists(l1, l2)
print('输出为:%d->%d->%d->%d->%d->%d' % \
(result.val, result.next.val, result.next.next.val, result.next.next.next.val,\
result.next.next.next.next.val, result.next.next.next.next.next.val))
参考
- https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/yi-kan-jiu-hui-yi-xie-jiu-fei-xiang-jie-di-gui-by-/
- https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/xin-shou-you-hao-xue-hui-tao-lu-bu-fan-cuo-4nian-l/