兩數相加:
給定兩個非空鍊錶來代表兩個非負整數,位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。
你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。
示例:
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)解法:把鍊錶l1和l2中的數字從左到右乙個個讀取出來的同時按照位數規律乘10的n次,同時存入變數a。然後建立兩個鍊錶,temp和l3,l3是用來最後輸出temp的,因為l3一直都指向temp的初始位置。 a對10取餘的值放入temp中。輸出:7 -> 0 -> 8
原因:342 + 465 = 807
while l1 != none or l2 !=none or a != 0:
這行**以 a or b or c來解釋or的用法,
當a為真時,直接返回a(也就是真),b和c不再去看它;
當a為假,看b,如果b為真,就返回b(也就是真),c不再去看它
當a,b為假,c為真,就返回c(也就是真)
當a,b,c都為假,就直接返回a(也就是假)
false(假)包括0(包括0.0等)、none、''和空集等情況
**如下:
# definition for singly-linked list.
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
class solution:
def addtwonumbers(self, l1, l2):
""":type l1: listnode
:type l2: listnode
:rtype: listnode
"""#先初始化temp鍊錶,l3鍊錶指向temp的0值位址
temp = listnode(0)
l3 = temp
a = 0
#當l1不為空或者l2不為空或者a不等於0的時候
while l1 != none or l2 !=none or a != 0:
if l1 != none:
#a等於a加上l1當前的值
a += l1.val
#l1的指標指向下乙個
l1 = l1.next
if l2 != none:
a += l2.val
l2 = l2.next
#temp的下乙個的值就是 a%10
temp.next = listnode(a%10)
temp = temp.next
a=a//10
#l3代替temp來輸出鍊錶
文中有什麼描述不當的請諒解!
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和...