Pythonで最も競争力のあるサブシーケンスを見つけるためのプログラム
配列numsと別の値kがあるとすると、サイズkのnumsの最も競合するサブシーケンスを見つける必要があります。ここで、サブシーケンスs1は、サブシーケンスs2(同じサイズ)よりも競争力があります。これは、s1とs2が異なる最初の位置で、サブシーケンスs1の数がs2の対応する数よりも少ない場合です。
したがって、入力がnums =[4,6,3,7] k =2のような場合、サイズ2のすべてのサブシーケンスの中で{[4,6]、[4、 3]、[4,7]、[6,3]、[6,7]、[3,7]}、[3,7]が最も競争力があります。
これを解決するには、次の手順に従います-
- 試行:=numsのサイズ-k
- スタック:=新しいリスト
- numsの各numについて、実行します
- スタックが空ではなく、num <スタックの最上位で、> 0を試行している間、実行
- スタックから要素をポップ
- 試行:=試行-1
- numをスタックにプッシュします
- スタックが空ではなく、num <スタックの最上位で、> 0を試行している間、実行
- スタックの上位k個の要素を返す
例
理解を深めるために、次の実装を見てみましょう-
def solve(nums, k): attempts = len(nums) - k stack = [] for num in nums: while stack and num < stack[-1] and attempts > 0: stack.pop() attempts -= 1 stack.append(num) return stack[:k] nums = [4,6,3,7] k = 2 print(solve(nums, k))
入力
[4,6,3,7], 2
出力
[3,7]
-
行列の転置を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 行列が与えられた場合、転置を同じ行列に格納して表示する必要があります。 行列の転置は、行を列に、列を行に変更することで得られます。つまり、A行列の転置はA[i][j]をA[j][i]に変更することで得られます。 以下に示す実装を見てみましょう- 例 N = 4 def transpose(A): for i in range(N): for j in range(i+1, N): &nbs
-
配列の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '