반응형
# Problem
Merge two sorted linked lists and return it as a sorted list. The list should be made by splicing together the nodes of the first two lists. Constraints:
|
# My Answer
# 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 l1 is None:
return l2
if l2 is None:
return l1
# l1, l2 모두 값이 존재하면 a,b 초기값 설정
if l1 and l2 and l1.val<=l2.val:
a = l1
b = l2
else:
a = l2
b = l1
answer = a # 정답 반환할 때 사용할 변수
# a에 계속 연결해 나가기
while a and a.next:
if a.next.val>b.val: # a의 다음 수보다 b의 값이 작으면 b를 a에 연결후 a.next 는 b 에 저장
a.next,b = b,a.next
a = a.next
else: # a.next가 b보다 작으면 a.next는 그대로 유지하고 a를 하나 다음으로 옮김
a = a.next
if a and b: # while문을 빠져나왔을 때 아직 b에 남은 값이 존재하면 a에 연결
a.next = b
return answer
# Solution 1 - 재귀 구조로 연결
# 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 (not l1) or (l2 and l1.val > l2.val):
l1, l2 = l2, l1 # 작은 값을 계속 l1에 연결시킨다.
if l1:
l1.next = self.mergeTwoLists(l1.next, l2)
return l1
# 연산자 우선순위
우선순위 | 연산자 | 설명 |
1 | ( ) | 괄호 |
2 | f(args...) | 함수 호출 |
3 | x[index:index] | 슬라이싱 |
4 | x[index] | 배열 |
5 | x.attribute | 속성 참조 |
6 | ** | 지수 |
7 | ~x | 비트 연산 NOT |
8 | +x,-x | 양수, 음수 |
9 | *, /, % | 곱, 나눗셈, 나머지 |
10 | +, - | 덧셈, 뺄셈 |
11 | >> , << | 비트 연산 시프트 |
12 | & | 비트 연산 AND |
13 | ^ | 비트 연산 XOR |
14 | | | 비트 연산 OR |
15 | in, not in, is, is not, <, <=, >, >=, <>, !=, == | 비교 연산 |
16 | not x | 부울 연산 NOT |
17 | and | 부울 연산 AND |
18 | or | 부울 연산 OR |
19 | lambda | 람다 표현 |
(출처 : 파이썬 알고리즘 인터뷰 책)
# 변수 스왑
1) 임시 변수 (Temporarily Variable) 사용하기
Temp = a
a=b
b=temp
2) 다중 할당 - 파이썬에서 지원하는 강력한 기능 ***
a,b = b,a
반응형
'Algorithm > LEET CODE ( 파이썬 알고리즘 인터뷰)' 카테고리의 다른 글
[LEET CODE] 2. Add Two Numbers ( 숫자형 리스트 병합하기) (0) | 2021.03.22 |
---|---|
[LEET CODE] 206. Reverse Linked List (0) | 2021.03.22 |
[LEET CODE] 234. Palindrome Linked List ( 연결리스트, 런너 기법) (0) | 2021.03.22 |
[LEET CODE] 121. Best Time to Buy and Sell Stock (0) | 2021.03.22 |
[LEET CODE] 238. Product of Array Except Self (0) | 2021.03.21 |