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

Pythonの連続する3つの要素から少なくとも1つの要素を取得することにより、最小の合計サブシーケンスを見つけるプログラム


numsと呼ばれる数のリストがあるとすると、3つの連続する数のすべてのグループに対して少なくとも1つの数が選択されるように、与えられたリストから最小の合計サブシーケンスを見つける必要があります。指定されたリストの長さが3未満の場合でも、番号を選択する必要があります。

したがって、入力がnums =[2、3、4、5、6、7]の場合、2と5を選択できるため、出力は7になります。

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

  • n:=numsのサイズ
  • nが0と同じ場合、
    • 0を返す
  • nが1と同じ場合、
    • return nums [0]
  • nが2と同じ場合、
    • 最小のnums[0]とnums[1]を返します
  • table:=サイズnのリストと0で埋める
  • table [0]:=nums [0]
  • table [1]:=nums [1]
  • table [2]:=nums [2]
  • 3からnの範囲のiについては、
    • table [i]:=nums [i] + table [i-3]、table [i-2]、table[i-1]の最小値
  • res:=テーブル[n-1]、テーブル[n-2]、テーブル[n-3]の最小値
  • return res

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

サンプルコード

class Solution:
   def solve(self, nums):
      n = len(nums)
      if n == 0:
         return 0
      if n == 1:
         return nums[0]
      if n == 2:
         return min(nums[0], nums[1])
      table = [0] * n

      table[0] = nums[0]
      table[1] = nums[1]
      table[2] = nums[2]

      for i in range(3, n):
         table[i] = nums[i] + min(table[i - 3], table[i - 2], table[i - 1])

         res = min(table[n - 1], table[n - 2], table[n - 3])
      return res

ob = Solution()
nums = [2, 3, 4, 5, 6, 7]
print(ob.solve(nums))

入力

[2, 3, 4, 5, 6, 7]

出力

7

  1. Pythonでツリーのすべての要素の合計を見つけるプログラム

    いくつかの値を含む二分木があるとすると、ツリー内のすべての値の合計を見つける必要があります。 したがって、入力が次のような場合 その場合、出力は14になります これを解決するには、次の手順に従います- 関数recurse()を定義します。これはノードを取ります val:=ノードの値 ノードの左側がnullでない場合、 val:=val + recurse(ノードの左側) ノードの権利がnullでない場合、 val:=val + recurse(ノードの右側) 戻り値 メインの方法から、次のようにします- ルートがゼロ以外

  2. リスト内の要素の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力としてリストが与えられた場合、与えられたリストの合計を計算する必要があります。 ここでは、考慮すべき2つのアプローチがあります。つまり、組み込み関数を使用する方法と、ブルートフォースアプローチを使用する方法です。 アプローチ1-組み込み関数の使用 例 # main arr = [1,2,3,4,5] ans = sum(arr) print ('Sum of the array is ',ans) 出力 15 すべての変数と関数はグローバルスコープで宣言されて