Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스파르타코딩클럽 #코딩 #jQuery #Ajax
- 항해99솔직후기 #항해99 #부트캠프추천
- 부트스트랩 #Bootstrap #웹개발첫걸음 #스파르타코딩클럽
- #내일배움단 #코딩프로젝트 #국비지원 #내일배움카드 #스파르타코딩클럽
- 스파르타코딩클럽 #크롤링 #스크래핑
Archives
- Today
- Total
이모저모
leetcode - merge two sorted lists 본문
- 첫 시도
# Input: list1 = [1,2,4], list2 = [1,3,4]
# Output: [1,1,2,3,4,4]
l1 = createLinkedList([1,2,4])
l2 = createLinkedList([1,3,4])
def merge(l1:ListNode, l2:ListNode) -> ListNode:
head = ListNode(None)
node = head
last_node = ListNode(None)
while l1 is not None and l2 is not None: # 둘 다 빈 값으로 들어온 것이 아니라면
if l1.val > l2.val: # l1은 더 작은 쪽의 노드를 지칭하고 싶어서
l1, l2 = l2, l1 # 만약 l1보다 l2가 작다면 서로 이름을 바꾼다.
# 작은 쪽이 무조건 l1
node.next = l1 # 작은 쪽 값인 l1이 현재 node 의 다음 것으로 지정.
node = node.next # 현재 노드는 그 다음 칸으로 이동.
last_node = l1
l1 = l1.next # 지금 막 비교하기로는 포인터에서 더 작은 값을 지녔던 l1 라인에서도 한칸 옆으로 이동.
# 남아있는 마지막 l2 연결해주고 싶어서.
last_node.next = l2
return head
result_head = merge(l1, l2).next. ## next 안 붙이면 처음에 만들어둔 none의 head부터 나온다.
printNodes(result_head)
- 리트코드에 제출해봤더니 각 리스트가 none일 때에 대한 예외처리(?)가 필요한 것 같았다.
- 그래서 아래와 같이 수정했다. ( + 그 외 다른 점: 혼자서 l1, l2라고 쓰던거는 리트코드 제출 포맷대로 list1, list2로 수정, Solution 클래스 내부에서 함수 정의)
class Solution(object):
def mergeTwoLists(self, list1, list2):
"""
:type list1: Optional[ListNode]
:type list2: Optional[ListNode]
:rtype: Optional[ListNode]
"""
head = ListNode(None)
node = head
last_node = ListNode(None)
# 빈 것들로 왔을 때의 예외처리도 해줘야 하는구나..?!
if list1 is None:
return list2
if list2 is None:
return list1
while list1 is not None and list2 is not None: # 둘 다 빈 값으로 들어온 것이 아니라면
if list1.val > list2.val: # l1은 더 작은 쪽의 노드를 지칭하고 싶어서
list1, list2 = list2, list1 # 만약 l1보다 l2가 작다면 서로 이름을 바꾼다.
# 작은 쪽이 무조건 l1
node.next = list1 # 작은 쪽 값인 l1이 현재 node 의 다음 것으로 지정.
node = node.next # 현재 노드는 그 다음 칸으로 이동.
last_node = list1
list1 = list1.next # 지금 막 비교하기로는 포인터에서 더 작은 값을 지녔던 l1 라인에서도 한칸 옆으로 이동.
# 남아있는 마지막 l2 연결해주고 싶어서.
last_node.next = list2
return head.next
근데 나는 시간이 무지 많이 걸린다..... ㅎㅎ 다른 분들 코드 보면서 배워야지..
'coding > 알고리즘,자료구조' 카테고리의 다른 글
leetcode - daily-temperatures (0) | 2022.01.18 |
---|---|
linked list 다루는 연습 - 가운데 노드 찾기 (0) | 2022.01.17 |
leetcode 206 - Reverse Linked List (0) | 2022.01.17 |
linked list - 특정 값을 갖는 노드 제거하기 (1)재귀적 방법 (0) | 2022.01.17 |
Linked List _ singly linked list python 구현 (0) | 2022.01.16 |
Comments