leetcode 兩數相加(騰訊50 1

2021-09-23 15:39:53 字數 2713 閱讀 3810

思路:

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...