링크
두개의 Linked-List에 있는 값들을 더해서 Linked List 형태로 표시
l1 = 2 -> 4 -> 3 : 342
l2 = 5 -> 6 -> 4 : 465
result = 7 -> 0 -> 8 : 807
# 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()
preNode = result
# 첫번째 노드 세팅
# 21.01.20 변경
nextAddValue = (int) (sumValue / 10)
sumValue = sumValue % 10
preNode.val = sumValue
# 다음노드가 None인지 확인
while l1.next != None or l2.next != None :
# l1, l2 Linked-List의 다음번 노드가 있으면 이동 후 값 얻고, 없으면 0으로 세팅
if l1.next != None :
l1 = l1.next
l1Value = l1.val
else :
l1Value = 0
if l2.next != None :
l2 = l2.next
l2Value = l2.val
else :
l2Value = 0
# l1 + l2 + 이전 노드 자리수 올림 발생 값
sumValue = l1Value + l2Value + nextAddValue
# 더한 값이 2자리 이상이면 하는 처리
if sumValue >= 10 :
nextAddValue = 1
sumValue = sumValue - 10
else :
nextAddValue = 0
# 계산된 값을 바탕으로 새로운 노드 추가 및 이동
newNode = ListNode()
newNode.val = sumValue
preNode.next = newNode
preNode = newNode
# 마지막 노드가 올림 발생 값 있으면 val=1 노드 추가
if nextAddValue >= 1 :
newNode = ListNode()
newNode.val = nextAddValue
preNode.next = newNode
preNode = newNode
return result
Runtime:
(60 ms)
, faster than(96.49%)
of Python3 online submissions for Add Two Numbers.
Memory Usage:(14.5 MB)
, less than(12.17%)
of Python3 online submissions for Add Two Numbers.
if sumValue >= 10 :
nextAddValue = 1
sumValue = sumValue - 10
else :
nextAddValue = 0
nextAddValue = (int) (sumValue / 10)
sumValue = sumValue % 10