mirror of
https://github.com/prdlk/leetcode.git
synced 2026-09-16 23:16:26 +00:00
feat(work): add solution for LeetCode 21 Merge Two Sorted Lists
This commit is contained in:
@@ -0,0 +1,77 @@
|
|||||||
|
"""
|
||||||
|
21. Merge Two Sorted Lists
|
||||||
|
Difficulty: Easy
|
||||||
|
https://leetcode.com/problems/merge-two-sorted-lists/
|
||||||
|
|
||||||
|
──────────────────────────────────────────────────
|
||||||
|
|
||||||
|
You are given the heads of two sorted linked lists list1 and list2.
|
||||||
|
|
||||||
|
Merge the two lists into one sorted list. The list should be made by
|
||||||
|
splicing together the nodes of the first two lists.
|
||||||
|
|
||||||
|
Return the head of the merged linked list.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Example 1:
|
||||||
|
|
||||||
|
Input: list1 = [1,2,4], list2 = [1,3,4]
|
||||||
|
Output: [1,1,2,3,4,4]
|
||||||
|
|
||||||
|
Example 2:
|
||||||
|
|
||||||
|
Input: list1 = [], list2 = []
|
||||||
|
Output: []
|
||||||
|
|
||||||
|
Example 3:
|
||||||
|
|
||||||
|
Input: list1 = [], list2 = [0]
|
||||||
|
Output: [0]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Constraints:
|
||||||
|
|
||||||
|
• The number of nodes in both lists is in the range [0, 50].
|
||||||
|
|
||||||
|
• -100 <= Node.val <= 100
|
||||||
|
|
||||||
|
• Both list1 and list2 are sorted in non-decreasing order.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
# 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, list1: Optional[ListNode], list2: Optional[ListNode]
|
||||||
|
) -> Optional[ListNode]:
|
||||||
|
|
||||||
|
if not list1:
|
||||||
|
return list2
|
||||||
|
if not list2:
|
||||||
|
return list1
|
||||||
|
|
||||||
|
if list1.val < list2.val:
|
||||||
|
head = list1
|
||||||
|
list1 = list1.next
|
||||||
|
else:
|
||||||
|
head = list2
|
||||||
|
list2 = list2.next
|
||||||
|
|
||||||
|
current = head
|
||||||
|
while list1 and list2:
|
||||||
|
if list1.val < list2.val:
|
||||||
|
current.next = list1
|
||||||
|
list1 = list1.next
|
||||||
|
else:
|
||||||
|
current.next = list2
|
||||||
|
list2 = list2.next
|
||||||
|
current = current.next
|
||||||
|
|
||||||
|
current.next = list1 or list2
|
||||||
|
return head
|
||||||
Reference in New Issue
Block a user