合計が少なくとも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 '