給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
示例:
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807
class solution(object):
def addtwonumbers(self, l1, l2):
""":type l1: listnode
:type l2: listnode
:rtype: listnode
"""start_node = listnode(0)
head = start_node
twosum = 0
flag = true
while flag:
start_node.next = listnode((l1.val+l2.val+twosum)%10)
twosum = 1 if (l1.val+l2.val+twosum>=10) else 0
start_node = start_node.next
if (l1.next is none) or (l2.next is none):
flag = false
else:
l1 = l1.next
l2 = l2.next
if (l1.next is none) and (l2.next is none):
##兩個鍊錶同時結束
if twosum==1:
start_node.next = listnode(1)
return head.next
elif (l2.next is none):
##l2結束了,l1還沒結束,考慮存在加法進一位的情況
start_node.next = l1.next
while(twosum==1) and (l1.next is not none):
twosum = 1 if (l1.next.val+1)>=10 else 0
l1.next.val = (l1.next.val+1)%10
l1 = l1.next
if twosum==1:
l1.next = listnode(1)
elif (l1.next is none):
##l1結束了,l2還沒結束,考慮存在加法進一位的情況
start_node.next = l2.next
while (twosum==1) and (l2.next is not none):
twosum = 1 if (l2.next.val+1)>=10 else 0
l2.next.val = (l2.next.val+1)%10
l2 = l2.next
if twosum ==1:
l2.next = listnode(1)
return head.next
將單鏈表設想成等長情況,不足位補0,可以簡化問題
# 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
"""##考慮將不等長的鍊錶看作等長的情況,空的地方補0
twosum = 0
head = listnode(0)
node = head
flag= true
while(flag):
flag = true if ((l1.next is not none) or (l2.next is not none)) else false
node.next = listnode((l1.val+l2.val+twosum)%10)
twosum = 1 if (l1.val+l2.val+twosum)>=10 else 0
node = node.next
if l1.next is none:
l1.next = listnode(0)
if l2.next is none:
l2.next = listnode(0)
l1= l1.next
l2 =l2.next
if twosum==1:
##最後加法進製的情況
node.next = listnode(1)
return head.next
2 兩數相加
平均星級 4.45 239次評分 2018年2月2日 28.6k次 預覽 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 ...
2 兩數相加
給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807 definition for singly l...
2 兩數相加
給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807演算法 我們首先從最低有效位也就是列表 l1和...