亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python3中如何實現兩數相加

發布時間:2021-04-01 11:26:21 來源:億速云 閱讀:328 作者:小新 欄目:開發技術

這篇文章主要介紹python3中如何實現兩數相加,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

兩數相加

給你兩個 非空 的鏈表,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式存儲的,并且每個節點只能存儲 一位 數字。
請你將兩個數相加,并以相同形式返回一個表示和的鏈表。
你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

python3中如何實現兩數相加

示例 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.遍歷兩個鏈表,只要有一個還沒有遍歷完就繼續遍歷
3.每次遍歷生成一個當前節點cur的下一個節點,其值為兩鏈表對應節點的和再加上當前節點cur產生的進位
4.更新進位后的當前節點cur的值
5.循環結束后,因為首位可能產生進位,因此如果cur.val是兩位數的話,新增一個節點
6.返回頭節點

由題目注釋可以看出listNode這個類是用來創建鏈表的,默認next=None,val=0.
Definition for singly-linked list.
class ListNode:
def init(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 current.val >= 10:
   current.next = ListNode(current.val//10)
   current.val = current.val%10
  return head

改進改進:增加了空間復雜度。本以為一方為None后直接把另一個鏈表連上就ok了。然后,就打臉了。

python3中如何實現兩數相加

然后又加了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
    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中如何實現兩數相加

以上是“python3中如何實現兩數相加”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

滦平县| 华宁县| 政和县| 仁化县| 宁津县| 武川县| 商水县| 石景山区| 开平市| 辉南县| 揭阳市| 阜康市| 胶州市| 梅州市| 延长县| 临潭县| 前郭尔| 太仓市| 祁门县| 民县| 峡江县| 山东省| 孟州市| 河源市| 闽侯县| 勃利县| 平泉县| 龙门县| 九台市| 哈巴河县| 永靖县| 团风县| 霞浦县| 鹿泉市| 孝昌县| 新巴尔虎左旗| 德化县| 河间市| 获嘉县| 凤庆县| 广德县|