Algorithm - mergeTwoLinkedList(l1, l2)
최대 1 분 소요
Problem
- 두 non-increasing linked list가 들어왔을 때, 이 둘을 합친 non-increasing linked list를 만드는 함수
example
- mergeTwoLinkedList([0, 1, 5], [3,3,3,7]) ==> [0,1,3,3,3,5,7]
solution
- linked list 각각을 읽어들이는 cursor를 두 개 만들고,
- 읽어들이면서 그 값이 작은 쪽을 새로 만들어진 head에 순차적으로 넣어준다.
- 새로 만들어진 linked list의 head를 리턴한다.
def mergeTwoLinkedLists(l1, l2):
head = None
r_cur = None
lc = l1
rc = l2
newVal = None
while True:
if lc is not None:
if rc is not None:# both not none
if lc.value < rc.value:
newVal = lc.value
lc = lc.next
else:
newVal = rc.value
rc = rc.next
else:#only l2 none
newVal = lc.value
lc = lc.next
else:#l1 None
if rc is not None:
newVal = rc.value
rc = rc.next
else:
return head
if head is None:
head = ListNode(newVal)
r_cur = head
else:
r_cur.next = ListNode(newVal)
r_cur = r_cur.next
댓글남기기