Leetcode2は2つの数字を追加しますPython

2つの非負の整数を表すために、2つの空でないリンクリストが指定されています。その中で、それぞれの桁は逆の順序で格納され、各ノードは1桁しか格納できません。

これらの2つの数値を合計すると、それらの合計を表す新しいリンクリストが返されます。

番号0を除いて、これらの番号はいずれも0で始まらないと想定できます。

例:###

入力:(2-> 4-> 3)+(5-> 6-> 4)
出力:7-> 0-> 8
理由:342 + 465 = 807

トピックの紹介はまだ比較的単純です。この質問も比較的単純です。次の点に注意する必要があります。

  1. リンクリストの整合性を維持するには、最終的なNext値をnoneにする必要があります

  2. キャリーの問題、キャリーがあるかもしれません

最後に、公式の問題解決策はpython3では解決できないため、python2をお勧めします。理由としては、一夜にして理解できませんでした。

# Definition for singly-linked list.
# classListNode(object):
#  def __init__(self, x):
#   self.val = x
#   self.next = None

classSolution(object):
 def addTwoNumbers(self, l1, l2):"""
  : type l1: ListNode
  : type l2: ListNode
  : rtype: ListNode
        """
  p = l1
  q = l2
  res =ListNode(0)
  r = res
  s =0 #運ぶ
  # もちろん、リードノードにしてresに戻すこともできます.次
  while(p!=None or q!=None):
   p_v =0if p==None else p.val
   q_v =0if q==None else q.val
   r_v =(p_v+q_v+s)%10
   s =(p_v+q_v+s)//10
   r.next =ListNode(r_v)
   r = r.next
   r.next = None
   # なしでない場合は、トラバースを続行します。それ以外の場合は、トラバースを停止します。
   p =p if p==None else p.next
   q =q if q==None else q.next
  if s !=0:
   r.next =ListNode(s)
   r = r.next
   r.next = None
  return res.next

Recommended Posts

Leetcode2は2つの数字を追加しますPython
python array add array_Python add array
Pythonの古典的なインタビューの質問2
Pythonの基本的な描画チュートリアル(2つ)
LeetCodeブラシ質問の概要python3
pythonで数値をフィルタリングする方法
Pythonの数字は何ですか?
pythonはどのように素数を決定しますか