[LeetCode] #2. Add Two Numbers
9213 ワード
#2.2つの数の加算
質問する
質問リンク
2つの接続リスト
l1=[2,4,3]
、l2=[5,6,4]
が与えられると、各接続リストの要素が逆方向に接続され、342
、465
が生成された後、生成された接続リストが戻される.に答える
1)接続リスト
807
、l1
の逆順を求める=>l2
, rev1
2)逆順接続リストのvalのみを接続します.=>rev2
, str1
3)2つの接続リストのvalを追加します.=>str2
4)文字列sum
の各位置からなる接続リストを作成する.sum
列をリストにした後、リストを接続リストに再リストします.=>sum
5)res_node
の逆順を求める.=>res_node
コード#コード#
完全なコード
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def reverseList(self, head: ListNode):
prev, curr = None, head
while curr:
next = curr.next
curr.next = prev
prev = curr
curr = next
return prev
def list2node(self, list) -> ListNode:
new_node = ListNode()
curr = new_node
for i in range(len(list)):
curr.next = ListNode(list[i])
curr = curr.next
return new_node.next
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
str1, str2 = '', ''
rev1 = self.reverseList(l1)
rev2 = self.reverseList(l2)
while rev1:
str1 += str(rev1.val)
rev1 = rev1.next
while rev2:
str2 += str(rev2.val)
rev2 = rev2.next
sum = str(int(str1) + int(str2))
sum_list = []
for i in range(len(sum)):
sum_list.append(int(sum[i]))
print("sum_list: ", sum_list)
res_node = self.list2node(sum_list)
rev_node = self.reverseList(res_node)
return rev_node
rev_node
:接続リストは、値ListNode 클래스
と、次のノードを指すval
とから構成される.next
:逆順序接続リストの位置を求める前に実装された関数と同じである.reverseList()
:リスト要素からなる接続リストを作成します.2つの接続リストのvalを追加するには、valをstrに変換し、接続後に整数を加えます.追加した結果をint->str->list->listNodeに順次変換します.
Reference
この問題について([LeetCode] #2. Add Two Numbers), 我々は、より多くの情報をここで見つけました https://velog.io/@ny_/LeetCode-2.-Add-Two-Numbersテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol