[leetcode] 2. Add Two Numbers
2022. 11. 14. 15:53ㆍ노트/Algorithm : 알고리즘
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.
# Definition for singly-linked list.
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
a = self.changeStringNumber(self.toList(self.reverse(l1)))
b = self.changeStringNumber(self.toList(self.reverse(l2)))
added_number = a + b
result = [s for s in str(added_number)]
result = self.reversedLinkedList(result)
return result
# 1. reverse linked list
def reverse(self, node, prev = None):
if not node:
return prev
while node:
next, node.next = node.next, prev
prev, node = node, next
return prev
# 2. return to list
def toList(self, node):
result = []
while node:
result.append(node.val)
node = node.next
return result
# 3. change int number
def changeStringNumber(self, num_list):
return int(''.join(str(n) for n in num_list) )
# 4. return to reversed linked list
def reversedLinkedList(self, num_list):
prev = None
for n in num_list:
node = ListNode(n)
node.next = prev
prev = node
return node
'노트 > Algorithm : 알고리즘' 카테고리의 다른 글
[leetcode] 328. Odd Even Linked List (0) | 2022.11.21 |
---|---|
[leetcode] 24. Swap Nodes in Pairs (0) | 2022.11.18 |
[leetcode] 206. Reverse Linked List (0) | 2022.11.14 |
[leetcode] 21. Merge Two Sorted Lists (0) | 2022.11.11 |
[leetcode] 234. Palindrome Linked List (0) | 2022.11.10 |