【leetcode千题】21. 合并两个有序链表

    科技2022-07-11  84

    将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

    示例:

    输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4

    思路:直接一个个遍历呗

    # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: ans = ListNode() anss = ans while l1 and l2 : if l1.val<l2.val: ans.next = l1 ans = ans.next l1 = l1.next else: ans.next = l2 ans = ans.next l2 = l2.next if l1 : ans.next = l1 if l2: ans.next = l2 return anss.next

    思路2:递归

    # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: if not l1: return l2 if not l2: return l1 if l1.val <= l2.val: l1.next = self.mergeTwoLists(l1.next,l2) return l1 else: l2.next = self.mergeTwoLists(l1,l2.next) return l2
    Processed: 0.009, SQL: 8