Add_Two_Numbers python 求解
leetcode 傳送門
例子:
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.
大體意思就是從前向後做加法,逢十進一。
在評論區找到的一個程式碼:
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
carry = 0 # 進位符
root = n = ListNode(0)
while l1 or l2 or carry:
# 只要 l1 l2 都不為空才進行操作,否則直接返回 0
v1 = v2 = 0
if l1:
v1 = l1.val
l1 = l1.next
if l2:
v2 = l2.val
l2 = l2.next
carry, val = divmod(v1+v2+carry, 10)
n.next = ListNode(val)
n = n.next
return root.next # 這步一定要仔細理解
divmod() 函式返回的是商和餘數構成的元組。
例如 a, b = divmod(6, 3) 就是 6除以3, a = 2, b = 0
這道題涉及到連結串列的知識,我想用 C 解答起來會稍微容易理解一點。對於 python,主要的是理解連結串列的構造。
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
使用這個類來構造一個連結串列
idx = ListNode(3)
n = idx
n.next = ListNode(4)
n = n.next
n.next = ListNode(5)
n = n.next
print(idx.val,idx.next.val,idx.next.next.val)
其實感覺 python 做這種資料結構對於理解連結串列來說還是有幫助的,但是相較於 C 程式碼, python 的程式碼還是難以理解的。
相關文章
- python+gurobi求解排班問題Python
- Cplex混合整數規劃求解(Python API)PythonAPI
- Python求解線性規劃——PuLP使用教程PythonPulp
- Python求解錯,不知道哪裡有問題。。。Python
- 遺傳演算法求解TSP問題(python版)演算法Python
- 僅50行Python程式碼!數獨求解!4秒!Python
- 疑惑求解
- 新手求解
- 求解數獨
- 求解c++C++
- 求解 LCA の方法
- 粒子群演算法求解物流配送路線問題(python)演算法Python
- AJAX 跨域請求解跨域
- 分治法求解問題
- 程式設計題求解程式設計
- matlab求解方程組Matlab
- 斯特林數求解
- 【閒話 No.1】 求解??
- 357賽事: 求解XYZM
- 03 迴歸演算法 - 線性迴歸求解 θ(最小二乘求解)演算法
- matplotlib 安裝失敗,求解!
- Excel中的規劃求解。Excel
- 淺談倍增法求解LCA
- 大數翻倍法求解CRT
- c++求解獎券題目C++
- 梯度下降求解最小二乘梯度
- 測試面試困惑求解答面試
- Jmeter 切換中文亂碼,求解JMeter
- NP難問題求解綜述
- 樹遞迴問題的求解遞迴
- matlab求解非線性規劃Matlab
- 求解一個陣列的所有子集陣列
- c++求解李白喝酒問題C++
- 暴力法求解“微信群覆蓋”?
- 遞迴求解漢諾塔問題遞迴
- 測試面試題目求解答面試題
- 表示式求解(非一位數)
- matlab求解線性規劃問題Matlab