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

Pythonでリンクリストとして表される数値を検索するプログラム


2つの単一リンクリストL1とL2があり、それぞれが最初に最下位桁の数字を表すと仮定すると、合計されたリンクリストを見つける必要があります。

したがって、入力がL1 =[5,6,4] L2 =[2,4,8]の場合、出力は[7、0、3、1、]

になります。

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

  • キャリー:=0

  • res:=値が0の新しいノード

  • curr:=res

  • L1が空でないか、L2が空でないか、キャリーがゼロ以外の場合は、実行してください

    • l0_val:=L1が空でない場合はL1の値。それ以外の場合は0

    • l1_val:=L2が空でない場合はL2の値。それ以外の場合は0

    • sum_:=l0_val + l1_val

    • キャリー:=(sum_ +キャリー)/ 10

      の商
    • add_val:=(sum_ +キャリー)の余り/ 10

    • curr.next:=値add_valの新しいノード

    • curr:=currの次

    • L1:=L1が空でない場合はL1の次、それ以外の場合はnull

    • L2:=L2が空でない場合はL2の次、それ以外の場合はnull

  • 次のcurr:=null

  • 次の解像度に戻る

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

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 solve(self, L1, L2):
      carry = 0
      res = ListNode(0)
      curr = res

      while L1 or L2 or carry:
         l0_val = L1.val if L1 else 0
         l1_val = L2.val if L2 else 0
         sum_ = l0_val + l1_val
         carry, add_val = divmod(sum_ + carry, 10)

         curr.next = ListNode(add_val)
         curr = curr.next

         L1 = L1.next if L1 else None
         L2 = L2.next if L2 else None

      curr.next = None

return res.next

ob = Solution()
L1 = make_list([5,6,4])
L2 = make_list([2,4,8])
print_list(ob.solve(L1, L2))

入力

[5,6,4], [2,4,8]

出力

[7, 0, 3, 1, ]

  1. Pythonを使用してリンクリストとして指定された2つの多項式を追加するプログラム

    2つの多項式が与えられ、2つの多項式の加算を見つける必要があるとします。多項式は、リンクリストとして表す必要があります。多項式の項は、リンクリストノードとして表されます。各リンクリストノードには、係数値、電力値、および次のリンクリストノードへのポインターが含まれます。 2つのリンクリスト多項式を追加した3番目のリンクリストを返す必要があります。 したがって、入力が次のような場合 1x ^ 1 + 1x ^ 2=0および2x^1 + 3x ^ 0 =0、 その場合、出力は3x ^ 1 + 1x ^ 2 + 3x ^ 0 =0になります。 これを解決するには、次の手順に従います-

  2. 最大3つの数字を見つけるPythonプログラム

    このチュートリアルでは、3つの数字から最大量を見つけるプログラムを作成します。 3つの数字があり、その3つの数字から最大数を見つけることが目標です。 理解を深めるために、いくつかのサンプルテストケースを見てみましょう。 Input: a, b, c = 2, 34, 4 Output: 34 Input: a, b, c = 25, 3, 12 Output: 25 Input: a, b, c = 5, 5, 5 Output: 5 以下の手順に従って、3つの数字の中から最大数を見つけてください。 アルゴリズム 1. Initialise three numbers a, b