[Python 으로 푸는 Leetcode]2.Add Two Numbers

느린 개발자·2020년 12월 13일
0

Coding Test

목록 보기
2/21

📌Problem

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.

You may assume the two numbers do not contain any leading zero, except the number 0 itself.

Example 1:

Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]
Explanation: 342 + 465 = 807.

Example 2:

Input: l1 = [0], l2 = [0]
Output: [0]

Example 3:

Input: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
Output: [8,9,9,9,0,0,0,1]

Constraints:

  • The number of nodes in each linked list is in the range [1, 100].
  • 0 <= Node.val <= 9
  • It is guaranteed that the list represents a number that does not have leading zeros.

leetcode 에서 풀기


📝Solution

# 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:
        l1_value=0
        l2_value=0
        
        num=1
        while l1:
            l1_value+=l1.val*num
            l1=l1.next
            num*=10

        num=1
        while l2:            
            l2_value+=l2.val*num
            l2=l2.next
            num*=10
        
        out_value=l1_value+l2_value
        
        header=None
        linked_list=None
        for c in str(out_value):
            if not header:
                header=ListNode(int(c))
                linked_list=header
            else:
                curNode=ListNode(int(c),linked_list)
                linked_list=curNode
        
        return linked_list
  • Time complexity : O(max(M,N)), m=l1, n=l2O(max(M,N)),\ m=|l1|,\ n=|l2|
profile
남들보단 느리지만, 끝을 향해

1개의 댓글

comment-user-thumbnail
2021년 12월 23일

I found that solution very popular and helpful:
https://www.youtube.com/watch?v=dAKC8003ke8&ab_channel=EricProgramming

답글 달기