You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
1. Code:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
rtype = None
prev = None
plugs = 0
while (l1 is not None) or (l2 is not None) or plugs != 0:
v1 = self._getListNodeValue(l1)
v2 = self._getListNodeValue(l2)
l1 = self._getNextListNode(l1)
l2 = self._getNextListNode(l2)
count = v1 + v2 + plugs
plugs = count / 10
ln = ListNode(count % 10)
if rtype is None:
rtype = ln
prev = rtype
else:
prev.next = ln
prev = prev.next
return rtype
def _getListNodeValue(self, ln):
"""
:type l1: ListNode
:rtype: number
"""
if not isinstance(ln, ListNode):
return 0
return ln.val
def _getNextListNode(self, ln):
"""
:type l1: ListNode
:rtype: ListNode
"""
if not isinstance(ln, ListNode):
return None
return ln.next
心得:
一看見題目就覺得簡單啊,刷刷地就寫完了
點Run Code按鈕,嗯?怎麼會出現這種錯誤訊息
重新看一次題目,原來有定義一個class ListNode
我還以為會傳進來的是List…
用Python寫Link-list,雖然不是不行拉
應該是防呆機制的關係,拿掉再試乙次
2. Code:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
rtype = None
prev = None
plugs = 0
while (l1 is not None) or (l2 is not None) or plugs != 0:
v1 = v2 = 0
if l1 is not None:
v1 = l1.val
l1 = l1.next
if l2 is not None:
v2 = l2.val
l2 = l2.next
count = v1 + v2 + plugs
plugs = count / 10
ln = ListNode(count % 10)
if rtype is None:
rtype = ln
prev = rtype
else:
prev.next = ln
prev = prev.next
return rtype
心得:
速度快了一點吧,微妙


沒有留言:
張貼留言