python3兩數相加的實現示例

2022-09-26 12:00:20 字數 2784 閱讀 2549

給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。

請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。

你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

示例 1:

輸入:l1 = [2,4,3], l2 = [5,6,4]

輸出:[7,0,8]

解釋:342 + 465 = 807.

示例 2:

輸入:l1 = [0], l2 = [0]

輸出:[0]

示例 3:

輸入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]

輸出:[8,9,9,9,0,0,0,1]

1.建立乙個新鍊錶,新鍊錶的頭部先設定為l1頭部和l2頭部之和。

2.遍歷兩個鍊錶www.cppcns.com,只要有乙個還沒有遍歷完就繼續遍歷

3.每次遍歷生成乙個當前節點cur的下乙個節點,其值為兩鍊錶對應節點的和再加上當前節點cur產生的進製

4.更新進製後的當前節點cur的值

5.迴圈結束後,因為首位可能產生進製,因此如果cur.val是兩位數的話,新增乙個節點

6.返回頭節點

由題目注釋可以看出listnode這個類是用來建立鍊錶的,預設next=none,val=0.

definition for singly-linked list.

class listnode:

definit(self, val=0, next=none):

self.val = val

self.next = next

# definition for singly-linked list.

# class listnode:

# def __init__(self, val=0, next=none):

# self.val = val

# self.next = next

class solution:

def addtwonumbers(self, l1: listnode, l2: listnode) -> listnode:

head = listnode(l1.val+l2.val)

current = head

while l1.next or l2.next:

l1 = l1.next if l1.next else listnode()

l2 = l2.next if l2.next!=none else listnode()

current.next = listnode(l1.val+l2.val+current.val//10)

current.val = current.val%10

current = current.next

if currewww.cppcns.comnt.val >= 10:

current.next = listnode(current.val//10)

current.val = current.val%10

return head

改進改進:增加了空間複雜度。本以為一方為none後直接把另乙個鍊錶連上就ok了。然後,就打臉了。

然後又加了while

> [9999]

# definition for singly-linked list.

# class listnode:

# def __init__(self, val=0, next=none):

# self.val = val

# self.next = next

class solution:

def addtwonumbers(self, l1: listnode, l2: listnode) -> listnode:

head = listnode(l1.val+l2.val)

current = head

while l1.next and l2.next:

l1 = l1.next

l2 = l2.next

current.next = listnode(l1.val+l2.val+current.val//10)

current.val = current.val%10

current = current.next

if l1.next == none and l2.next :

while l2.next:

l2 = l2.next

current.next= listnode(l2.val+current.val//10)

current.val = current.val%10

current = current.next

current.next = l2.next

elif l2.next == none and l1.next:

while l1.next:

l1 = l1.next

gomvbqlwzr current.next= listnode(l1.val+current.val//10)

current.val = current.val%10

current = current.next

current.next = l2.next

if current.val >= 10:

current.next = listnode(current.val//10)

current.val = current.val%10

return head

兩數相加(Python3實現)

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

力扣 2 兩數相加 Python3

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

python3 兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...