合計が少なくともPythonでターゲットとなる最小のサブリストのサイズを見つけるプログラム
numsと呼ばれる数値のリストと、targetと呼ばれる別の入力があるとすると、その合計値がtargetと同じかそれ以上になるように、最短のサブリストのサイズを見つける必要があります。そのようなサブリストがない場合は、-1を返します。
したがって、入力がnums =[2、11、-4、17、4] target =19の場合、[17、4]を選択して少なくとも19の合計を取得できるため、出力は2になります。
これを解決するには、次の手順に従います-
-
ps:=1つの要素のみを含むリスト0
-
numsのnumごとに、実行します
-
psの後に(ps + numの最後の要素)を挿入します
-
num> =targetの場合、
-
1を返す
-
-
-
min_size:=inf
-
q:=[0]
-
j:=0
-
1からpsのサイズの範囲のiの場合、実行します
-
j:=jの最小値、qのサイズ-1
-
j
=ターゲット、実行
-
min_size:=min_sizeの最小値と(i --q [j])
-
j:=j + 1
-
-
qとps[i]<=ps [qの最後の要素]、実行
-
qから最後の要素を削除する
-
-
qの最後にiを挿入します
-
-
-
min_size
の場合はmin_sizeを返します
例
理解を深めるために、次の実装を見てみましょう-
class Solution: def solve(self, nums, target): ps = [0] for num in nums: ps += [ps[-1] + num] if num >= target: return 1 min_size = float("inf") q = [0] j = 0 for i in range(1, len(ps)): j = min(j, len(q) - 1) while j < len(q) and ps[i] - ps[q[j]] >= target: min_size = min(min_size, i - q[j]) j += 1 while q and ps[i] <= ps[q[-1]]: q.pop() q.append(i) return min_size if min_size < float("inf") else -1 ob = Solution() nums = [2, 11, -4, 17, 4] target = 19 print(ob.solve(nums, target))
入力
[2, 11, -4, 17, 4], 19
出力
2
-
リストの累積合計を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、累積合計でリストを作成する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # cumulative sum def Cumulative(l): new = [] cumsum = 0 for element in l: cumsum += element new.append(cumsum) &
-
配列の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '