[LeetCode] 2.add two number
再エンコードテストの準備
https://leetcode.com/problems/add-two-numbers/
問題の詳細については、以下のWebサイトを参照してください.
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.
たとえば、2->4->3,5->6->4の接続リストです.
243+564=807で、接続リストを使用して7->0->8の問題としてマークします.
LinkedListを利用した問題だと思います.問題はすでに基本的な等級を与えた.
str()関数とlist()、および
うまく利用すればいい
リンクリストの構造は次のとおりです.
最初は値がなく、接続のみ可能なヘッダノードを作成します.
次に、ヘッダーにカーソル値を指定します.
header.next=newNode()接続する新しいノードを作成します.
作成後、カーソル値をcurr=headerノードとします.nextを使用して移行します.
ノードが作成されると、反転数の初期値がnodeに設定されます.valを挿入します.
これを数値リストの最後の値に繰り返します.
接続リストの最後のnextには値は挿入されません.
戻り先もあるnext
リスト#リスト#
他の人のやり方でやれば57%も早くなります.
反転を最小化したようです
LinkedListの概念を再復習できる問題のようです.
https://leetcode.com/problems/add-two-numbers/
問題の詳細については、以下のWebサイトを参照してください.
に質問
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.
たとえば、2->4->3,5->6->4の接続リストです.
243+564=807で、接続リストを使用して7->0->8の問題としてマークします.
方法
LinkedListを利用した問題だと思います.問題はすでに基本的な等級を与えた.
str()関数とlist()、および
うまく利用すればいい
リンクリストの構造は次のとおりです.
最初は値がなく、接続のみ可能なヘッダノードを作成します.
次に、ヘッダーにカーソル値を指定します.
header.next=newNode()接続する新しいノードを作成します.
作成後、カーソル値をcurr=headerノードとします.nextを使用して移行します.
ノードが作成されると、反転数の初期値がnodeに設定されます.valを挿入します.
これを数値リストの最後の値に繰り返します.
接続リストの最後のnextには値は挿入されません.
戻り先もある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: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
answer = ListNode()
num1 = num2 = ""
while l1:
num1 += str(l1.val)
l1 = l1.next
while l2:
num2 += str(l2.val)
l2 = l2.next
sum = str(int(num1[::-1]) + int(num2[::-1]))
sum = sum[::-1]
curr = answer
for i in range(len(sum)) :
curr.next = ListNode()
curr = curr.next
curr.val = sum[i]
return answer.next
💯 他人が解釈するコード
class Solution:
def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
def iterate(ll):
listt = []
current = ll
while current != None:
listt.append(current.val)
current = current.next
return listt
list1, list2 = iterate(l1), iterate(l2)
def convert(l):
s = ''
for i in l:
s += str(i)
integer = int(s[::-1])
return integer
int1, int2 = convert(list1), convert(list2)
ans = str(int1+int2)[::-1]
ansl = [int(c) for c in ans ]
cur = dummy = ListNode(0)
for i in ansl:
cur.next = ListNode(i)
cur = cur.next
return dummy.next
🧑🏻 ポスト
他の人のやり方でやれば57%も早くなります.
反転を最小化したようです
LinkedListの概念を再復習できる問題のようです.
Reference
この問題について([LeetCode] 2.add two number), 我々は、より多くの情報をここで見つけました https://velog.io/@sdj3261/LeetCode-2.add-two-numberテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol