leetcode 2 兩數相加 python

2021-08-21 21:08:46 字數 1836 閱讀 6583

給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。

你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。

示例:

輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)輸出:7 -> 0 -> 8原因:342 + 465 = 807
1、正常思路

# definition for singly-linked list.

# class listnode(object):

# def __init__(self, x):

# self.val = x

# self.next = none

class solution(object):

# maybe standard version

def _addtwonumbers(self, l1, l2):

""":type l1: listnode

:type l2: listnode

:rtype: listnode

"""p = dummy = listnode(-1)

carry = 0

while l1 and l2:

p.next = listnode(l1.val + l2.val + carry)

carry = p.next.val / 10

p.next.val %= 10

p = p.next

l1 = l1.next

l2 = l2.next

res = l1 or l2

while res:

p.next = listnode(res.val + carry)

carry = p.next.val / 10

p.next.val %= 10

p = p.next

res = res.next

if carry:

p.next = listnode(1)

return dummy.next

2、大神解法:

# definition for singly-linked list.

# class listnode(object):

# def __init__(self, x):

# self.val = x

# self.next = none

class solution(object):

def addtwonumbers(self, l1, l2):

""":type l1: listnode

:type l2: listnode

:rtype: listnode

"""p = dummy = listnode(-1)

carry = 0

while l1 or l2 or carry:

val = (l1 and l1.val or 0) + (l2 and l2.val or 0) + carry

carry = val / 10

p.next = listnode(val % 10)

l1 = l1 and l1.next

l2 = l2 and l2.next

p = p.next

return dummy.next

LeetCode2 兩數相加

嗯。今天兩個簡單題,我可能要墮落了 先貼第乙個 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807...

LeetCode 2 兩數相加

題目 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 解題 這題就比較簡單了,兩數相加處理好...

LeetCode 2 兩數相加

題目描述 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。題目思路 先從最低有效位也就是列表 l1 和 l2 的表頭開始相加。由於每位數字都應當處於 0 9 的範圍內,我們計算...