兩數相加Leecode及單鏈表

2021-08-19 05:55:56 字數 2371 閱讀 3257

問題描述:

給定兩個

非空鍊錶來表示兩個非負整數。位數按照

逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。

輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

輸出:7 -> 0 -> 8

原因:342 + 465 = 807

針對這個問題給出以下簡答:
class listnode:

def __init__(self, x):

self.val = x

self.next = none

#在python中乙個變數就是乙個指標

class solution:

def addtwonumbers(self, l1, l2):

""":type l1: listnode

:type l2: listnode

:rtype: listnode

"""#初始化乙個鍊錶

pre_node = listnode(0)

#並用cur指向

cur = pre_node

flag = 0 #進製符

#----遍歷鍊錶-------

while l1 or l2:

#對鍊錶中的每乙個值

val1=val2=0

if l1: #判斷鍊錶是否有元素

val1 = l1.val #讀取鍊錶中的值

l1 = l1.next #將當前節點放到下乙個節點

if l2:

val2= l2.val

l2 = l2.next

sumnum = val1 + val2 + flag#add計算

flag = int(sumnum / 10)#為0則不需要進製為一的

cur.next = listnode(sumnum % 10)#增加乙個節點

cur = cur.next #cur 指向當前節點

#表示最後一位是否有進製是

if flag>0:

cur.next = listnode(flag)#有鍊錶中最後進製的時候增加乙個節點。

return pre_node.next

單鏈表的結構如下圖所示:

在python沒有專門的指標概念,在python中每乙個變數都是指標

引用表示指向關係,只不過引用不能像指標一樣進行運算

因此,要實現鍊錶的操作,不能和c一樣直接對指標進行操作

實現鍊錶反**

#python鍊錶實現

#定義乙個單鏈表

class listnode(object):

def

__init__(self):

self.val = none

self.next = none

#對鍊錶進行操作

class listnode_handle:

def

__init__(self):

self.cur_node=none

#增加新的節點操作

def

add(self

,data):

node =listnode()

node.val =data

node.next=self.cur_node

self.cur_node=node

return node

def

print_listnode(self

,node):

while node:

print('

\nnode: '

, node,

' value: '

, node.val,

' next: '

, node.next)

#鍊錶反轉

def

_reverse(self

,nodelist):

list=

#把鍊錶當中的值全部放入列表中

while nodelist:

nodelist= nodelist.next

result=listnode()#初始化鍊錶物件

result_handle = listnode_handle()#初始化鍊錶操作物件

for i in list:#遍歷列表中的資料

result =result_handle.add(i)

return result

單鏈錶兩數相加

思路很簡單,遍歷兩個鍊錶將和放入新的鍊錶之中,注意需要正確的處理進製。完整 如下 public class listnode public static listnode addtwonumbers listnode l1,listnode l2 if q null if carry 0 retur...

兩數相加leecode

兩數相加 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。輸入 2 4 3 5 6 4 輸...

leecode試題,兩數相加

2.兩數相加 難度中等3991 給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3...