两数相加Python解法
生活随笔
收集整理的這篇文章主要介紹了
两数相加Python解法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
給你兩個?非空 的鏈表,表示兩個非負的整數(shù)。它們每位數(shù)字都是按照?逆序?的方式存儲的,并且每個節(jié)點只能存儲?一位?數(shù)字。
請你將兩個數(shù)相加,并以相同形式返回一個表示和的鏈表。
你可以假設(shè)除了數(shù)字 0 之外,這兩個數(shù)都不會以 0?開頭。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/add-two-numbers
?
例:
輸入:l1 = [2,4,3], l2 = [5,6,4] 輸出:[7,0,8] 解釋:342 + 465 = 807.# 解析:創(chuàng)建新鏈表,每個節(jié)點相加,記錄是否進位,新鏈表的節(jié)點為進位加兩個鏈表的節(jié)點和的個位。最后一位若有進位,則繼續(xù)新增一個節(jié)點即可。
# 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:re = ListNode(0) # 新建鏈表頭結(jié)點r = re # 頭結(jié)點carry = 0 # 進位while (l1 or l2): # l1或l2有一個存在即可x = l1.val if l1 else 0 # l1當(dāng)前節(jié)點的值y = l2.val if l2 else 0 # l2當(dāng)前節(jié)點的值s = carry + x + y # 進位加l1和l2的值carry = s // 10 # 判斷是否進位r.next = ListNode(s%10) # 去和的個位部分r=r.next # 指向下一個節(jié)點if(l1!=None): l1=l1.next # 若l1不為空,則l1指向下一個節(jié)點if(l2!=None): l2=l2.next # 若l2不為空,則l2指向下一個節(jié)點if(carry>0): # 如果最后還存在進位r.next = ListNode(1) # 創(chuàng)鍵新節(jié)點用來存儲最高位return re.next # 返回頭結(jié)點之后的節(jié)點,頭結(jié)點未參與計算總結(jié)
以上是生活随笔為你收集整理的两数相加Python解法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 取消EVF?索尼ZV-E1外观曝光 预计
- 下一篇: 独一份!真我GT Neo5 SE配100