Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで2つの数値を追加する


空でないリンクリストを2つ指定したとします。これらの2つのリストは、2つの非負の整数を表しています。数字は逆の順序で保存されます。各ノードには1桁しか含まれていません。 2つの数値を加算し、結果をリンクリストとして返します。 2つの数値には、数値0自体を除いて、先行ゼロが含まれていないと想定しています。したがって、数値が120 + 230の場合、リンクリストは[0→2→1]+[0→3→2]=[0→5→3]=350になります。

これを解決するために、次の手順に従います

  • 2つのリストl1とl2を取ります。ヘッドと温度をnullとして初期化します
  • c:=0
  • l1とl2はどちらも空でないリストです
    • l1が空でない場合は、:=0を設定し、そうでない場合は:=l1.val
    • を設定します。
    • l2が空でない場合は、b:=0に設定します。それ以外の場合は、b:=l2.val
    • を設定します。
    • n:=a + b + c
    • n> 9の場合、c:=1、それ以外の場合は0
    • node:=値nmod10で新しいノードを作成します
    • ヘッドがnullの場合
      • head:=nodeおよびtemp:=node

    • それ以外の場合
      • head.next:=ノード、およびhead:=ノード
    • l1:=l1が存在する場合、l1の次のノード
    • l2:=l2が存在する場合、l2の次のノード
  • cがゼロ以外の場合、
    • node:=値1の新しいノード、headの次:=node
  • リターン温度
例(Python)

理解を深めるために、次の実装を見てみましょう

class ListNode:
   def __init__(self, data, next = None):
      self.val = data
      self.next = next
def make_list(elements):
   head = ListNode(elements[0])
   for element in elements[1:]:
      ptr = head
      while ptr.next:
         ptr = ptr.next
      ptr.next = ListNode(element)
   return head
def print_list(head):
   ptr = head
   print('[', end = "")
   while ptr:
      print(ptr.val, end = ", ")
      ptr = ptr.next
   print(']')
class Solution:
   def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
      head = None
      temp = None
      c = 0
      while l1 or l2:
         if not l1:
            a= 0
         else:
            a = l1.val
         if not l2:
            b=0
         else:
            b = l2.val
         n = a +b + c
         c = 1 if n>9 else 0
         node = ListNode(n%10)
         if not head:
            head = node
            temp = node
         else:
            head.next = node
            head = node
         l1 = l1.next if l1 else None
         l2 = l2.next if l2 else None
      if c:
         node = ListNode(1)
         head.next = node
      return temp
ob1 = Solution()
l1 = make_list([0,2,1])
l2 = make_list([0,3,2])
print_list(ob1.addTwoNumbers(l1, l2))

入力

[0,2,1]
[0,3,2]

出力

[0,5,3]

  1. 2つの数の最大公約数のためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの整数が与えられているので、2つの数値の最大公約数を表示する必要があります ここでは、入力として受け取る2つの数値の最小値を計算しています。各値を1から計算された最小値まで除算することによって計算されて除数を計算するループ 条件が真であると評価されるたびに、カウンターは1ずつ増加します。 それでは、以下の実装の概念を見てみましょう- 例 a = 5 b = 45 count = 0 for i in range(1, min(a, b)+1):    if a%i==0 an

  2. 2つの数値を追加するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 2つの大きな数が与えられ、それらを追加して出力を表示する必要があります。 ブルートフォースアプローチでは、オペランド間に「+」演算子を使用するか、2つの数値を反復可能に格納して、Python標準ライブラリで使用可能な組み込みのsum関数を使用できます。 このアプローチでは、計算が10進数で直接行われるため、時間計算量が増加します。 次に、10進数のビットを処理する別のアプローチについて説明します。 ここでは、合計とキャリーを計算する加算器の概念を使用します。 それでは、実装を見