思路:
leetcode中已經設定了鍊錶,只需遍歷兩個待相加的列表,逐次相加即可。
思想:
分為三種情況,
兩個相加的數長度相等,逐個遍歷進行相加。需處理滿10進1,設定乙個flag列表處理對應位置相加後-10的結果。便於遍歷下乙個位置時進行相加。(即處理進1的操作)。
兩個數不等。提前乙個結束
在上述現象中,即不論相等或者是不相等,均需要處理一種情況,即兩個數的各個位置處理完後仍然需要進1的情況,即99 + 9的情況。9+9的情況。這些情況需要單獨處理。
下面是**,親測可用
關鍵:設定乙個臨時變數,temp。在建立的新鍊錶中起到連線作用。
下述關鍵**的解釋:
temp.next = list1#用於兩個節點之間的連線
temp = list1#temp是最後乙個節點
實現先連線後移動。(鍊錶的思想)
class solution:
def addtwonumbers(self, l1, l2):
count = 0
cur1 = l1
cur2 = l2
flag =
temp = none
while cur1 is not none or cur2 is not none:
# print(cur1.data)
# print(cur2.data)
# print(cur1.next1.data)
# print(cur2.next1.data)
if cur1 is not none and cur2 is not none:
sum1 = cur1.val + cur2.val
if count > 0:
sum1 += flag[count - 1]
if sum1 >= 10:
sum1 = sum1 - 10
else:
list1 = listnode(sum1)
if temp is none:
list1 = listnode(sum1)
temp = list1
head = list1
else:
temp.next = list1#用於兩個節點之間的連線
temp = list1#
count += 1
cur1 = cur1.next
cur2 = cur2.next
if cur1 == none and cur2 == none:#處理兩個數字都沒有時,還有進製的情況
if flag[count - 1] != 0:
list1 = listnode(flag[count - 1])
temp.next = list1
else:
pass
elif cur1 is none:
sum1 = cur2.val
if count > 0:
sum1 += flag[count - 1]
if sum1 >= 10:
sum1 = sum1 -10
else:
list1 = listnode(sum1)
if temp is none:
list1 = listnode(sum1)
temp = list1
head = list1
else:
temp.next = list1
temp = list1
count += 1
# cur1 = cur1.next
cur2 = cur2.next
if cur2 == none:
if flag[count - 1] != 0:
list1 = listnode(flag[count - 1])
temp.next = list1
else:
pass
elif cur2 is none:
sum1 = cur1.val
if count > 0:
sum1 += flag[count - 1]
if sum1 >= 10:
sum1 = sum1 - 10
else:
list1 = listnode(sum1)
if temp is none:
list1 = listnode(sum1)
temp = list1
head = list1
else:
temp.next = list1
temp = list1
count += 1
cur1 = cur1.next
# cur2 = cur2.next
if cur1 == none:
if flag[count - 1] != 0:
if flag[count - 1] != 0:
list1 = listnode(flag[count - 1])
temp.next = list1
else:
pass
# print(sum1)
# list1.next = none
# sum_node1 = node(sum1)
return head
LeetCode 兩數相加
題目來自leetcode 注意幾點 鍊錶對應結點相加時增加前乙個結點的進製,並儲存下乙個結點的進製 兩個鍊錶長度不一致時,要處理較長鍊錶剩餘的高位和進製計算的值 如果最高位計算時還產生進製,則還需要新增乙個額外結點。definition for singly linked list.struct l...
leetcode 兩數相加
給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭.示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 definition for singly ...
leetcode 兩數相加
給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807 definition for singly l...