Pythonでセットの最小要素と最大要素の合計がk未満である空でないサブセットをカウントするプログラム
numsと呼ばれる数のリストと別の値kがあるとすると、Sの最小値+Sの最大値<=kとなるような空でないサブセットSの数を見つける必要があります。サブセットはマルチセットであることに注意する必要があります。したがって、サブセットは値ではなくリストの特定の要素を参照しているため、サブセットに重複する値が存在する可能性があります。
したがって、入力がnums =[2、2、5、6]、k =7の場合、出力は6になります。これは、[2]、[2]、[2、 2]、[2、5]、[2、5]、[2、2、5]。
これを解決するには、次の手順に従います-
- N:=Aのサイズ
- リストAを並べ替える
- ans:=0
- j:=N-1
- 0からNの範囲のiについては、
- jおよびA[i]+ A [j]> Kの場合、実行
- j:=j-1
- i<=jかつA[i]+ A [j] <=Kの場合、
- ans:=ans + 2 ^(j --i)
- jおよびA[i]+ A [j]> Kの場合、実行
- 回答を返す
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def solve(self, A, K): N = len(A) A.sort() ans = 0 j = N - 1 for i in range(N): while j and A[i] + A[j] > K: j -= 1 if i <= j and A[i] + A[j] <= K: ans += 1 << (j - i) return ans ob = Solution() nums = [2, 2, 5, 6] k = 7 print(ob.solve(nums, k))
入力
[2, 2, 5, 6]
出力
6
-
Pythonで合計がkであるパスの数をカウントするプログラム
二分木と別の値kがあるとすると、合計がkになるサブ子パスへの一意のノードの数を見つける必要があります。 したがって、入力が次のような場合 k =5の場合、パスは[2、3]と[1、4] であるため、出力は2になります。 これを解決するには、次の手順に従います- count:=マップは最初にキー0の値1を保持します ans:=0、プレフィックス:=0 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 プレフィックス:=プレフィックス+ノードの値 ans:=ans +(count [prefix --target]、これが利用できない場合は0にな
-
配列内の最大の要素を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n): #maximal element