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, ]
-
Pythonを使用してリンクリストとして指定された2つの多項式を追加するプログラム
2つの多項式が与えられ、2つの多項式の加算を見つける必要があるとします。多項式は、リンクリストとして表す必要があります。多項式の項は、リンクリストノードとして表されます。各リンクリストノードには、係数値、電力値、および次のリンクリストノードへのポインターが含まれます。 2つのリンクリスト多項式を追加した3番目のリンクリストを返す必要があります。 したがって、入力が次のような場合 1x ^ 1 + 1x ^ 2=0および2x^1 + 3x ^ 0 =0、 その場合、出力は3x ^ 1 + 1x ^ 2 + 3x ^ 0 =0になります。 これを解決するには、次の手順に従います-
-
最大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