문제
leetcode.com/problems/add-two-numbers/
코드
1) 두 수의 합이 10이상일 경우 carry로 다음 노드에 1전달
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
result = ListNode()
cur = result
carry = 0
while l1 or l2 or carry:
sum = 0
if l1:
sum += l1.val
l1 = l1.next
if l2:
sum += l2.val
l2 = l2.next
if sum+carry >= 10:
val = sum+carry-10
carry = 1
else:
val = sum+carry
carry = 0
cur.next = ListNode(val)
cur = cur.next
return result.next
다른 코드
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
result = ListNode()
cur = result
carry = 0
while l1 or l2 or carry:
sum = (l1.val if l1 else 0) + (l2.val if l2 else 0) + carry
carry = 0
if sum >= 10:
sum -=10
carry = 1
l1 = l1.next if l1 else None
l2 = l2.next if l2 else None
cur.val = sum
if l1 or l2 or carry:
cur.next = (next := ListNode())
cur = next
return result
위 코드는 변수를 불러오는 방법에 대해 새롭게 알 수 있어서 작성해봤다.
sum = (l1.val if l1 else 0) + (l2.val if l2 else 0) + carry
또는
l1 = l1.next if l1 else None
cur.next = (next := ListNode())
'⏳ 알고리즘 > python 알고리즘 문제 풀이' 카테고리의 다른 글
리트코드 - 328. Odd Even Linked List (0) | 2021.05.11 |
---|---|
리트코드 - 24. Swap Nodes in Pairs (0) | 2021.05.11 |
리트코드 - 206. Reverse Linked List (0) | 2021.05.09 |
리트코드 - 21. Merge Two Sorted Lists (0) | 2021.05.09 |
리트코드 - 349. Intersection of Two Arrays (0) | 2021.05.07 |