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

Pythonの葉のリストから最小の木の合計を見つけるプログラム


numsという番号のリストがあるとします。このリストは、ツリーを順番にトラバースする際のリーフノードを表しています。ここで、内部ノードには2つの子があり、それらの値は、左側のサブツリーの最大の葉の値と右側のサブツリーの最大の葉の値の積と同じです。値の合計が最小のツリーの合計を見つける必要があります

したがって、入力がnums =[3、5、10]の場合、出力は83になります。

Pythonの葉のリストから最小の木の合計を見つけるプログラム

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

  • res:=numsのすべての要素の合計
  • numsのサイズが1より大きい場合は
    • i:=numsの最小要素のインデックス
    • left:=nums [i-1](i> 0の場合)それ以外の場合は無限大
    • right:=nums [i + 1](i
    • res:=res +(左右の最小値)* numsのi番目の要素、次にnumsからi番目の要素を削除
  • return res

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

サンプルコード

class Solution:
   def solve(self, nums):
      res = sum(nums)
      while len(nums) > 1:
         i = nums.index(min(nums))
         left = nums[i - 1] if i > 0 else float("inf")
         right = nums[i + 1] if i < len(nums) - 1 else float("inf")
         res += min(left, right) * nums.pop(i)

      return res

ob = Solution()
nums = [3, 5, 10]
print(ob.solve(nums))

入力

[3, 5, 10]

出力

83

  1. リストの累積合計を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、累積合計でリストを作成する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # cumulative sum def Cumulative(l):    new = []    cumsum = 0    for element in l:       cumsum += element       new.append(cumsum) &

  2. 配列の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '