https://leetcode.com/problems/merge-two-sorted-lists/?envType=study-plan&id=level-1
Merge Two Sorted Lists - LeetCode
Can you solve this real interview question? Merge Two Sorted Lists - You are given the heads of two sorted linked lists list1 and list2. Merge the two lists in a one sorted list. The list should be made by splicing together the nodes of the first two lists
leetcode.com
내 풀이 1
# 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]:
# 맨 앞쪽에 있는 인자들을 차례로 비교하여 sorting을 진행한다.
# 각 링크드 리스트의 맨 앞쪽에 있는 인자들은 해당 링크드 리스트에서 제일 작은 수이다.
# base case
# (0) 빈 리스트가 들어올 경우에 대한 예외처리
if list1==None :
if list2!=None:
return list2
else:
return None
if list2==None :
return list1
# (1) 일반적인 경우
if list1.val>=list2.val:
list2.next = self.mergeTwoLists(list2.next,list1)
return list2
else:
list1.next = self.mergeTwoLists(list1.next,list2)
return list1
음,, 속도가 너무 안좋아 보인다,, 하위 70퍼라니
두번째 풀이
# 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]:
# 맨 앞쪽에 있는 인자들을 차례로 비교하여 sorting을 진행한다.
# 각 링크드 리스트의 맨 앞쪽에 있는 인자들은 해당 링크드 리스트에서 제일 작은 수이다.
# base case
# (0) 빈 리스트가 들어올 경우에 대한 예외처리
if list1==None :
return list2
if list2==None :
return list1
# (1) 일반적인 경우
if list1.val>=list2.val:
list2.next = self.mergeTwoLists(list2.next,list1)
return list2
else:
list1.next = self.mergeTwoLists(list1.next,list2)
return list1
음,... 퍼포먼스가 기존이랑 똑같네 ;ㅅ;
내 풀이 3
# 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]:
# 맨 앞쪽에 있는 인자들을 차례로 비교하여 sorting을 진행한다.
# 각 링크드 리스트의 맨 앞쪽에 있는 인자들은 해당 링크드 리스트에서 제일 작은 수이다.
# base case
# (0) 빈 리스트가 들어올 경우에 대한 예외처리
if list1==None :
return list2
elif list2==None :
return list1
# (1) 일반적인 경우
if list1.val>=list2.val:
list2.next = self.mergeTwoLists(list2.next,list1)
return list2
else:
list1.next = self.mergeTwoLists(list1.next,list2)
return list1
헐,, base case 쪽에 if 로 두개 나열되어있던걸 if와 elif로 나누니까 갑자기 속도가 상위 9퍼가 됐어,,
'알고리즘 > Problem Solving' 카테고리의 다른 글
LeetCode - 876. Middle of the Linked List (1) | 2023.04.12 |
---|---|
LeetCode - 206. Reverse Linked List (0) | 2023.04.12 |
LeetCode - 392. Is Subsequence (0) | 2023.03.20 |
LeetCode - 205. Isomorphic Strings (0) | 2023.03.20 |
파이썬 Problem Solving 시간복잡도 개선 방법 (0) | 2023.03.12 |
댓글