Pythonで特定のリストの最長の算術サブシーケンスの長さを見つけるプログラム
numsと呼ばれる数値のリストがあるとすると、最長の算術サブシーケンスの長さを見つける必要があります。シーケンスS[i]は、S [i + 1] --S [i]が範囲内のすべてのiに対して同じ値を持つ場合の等差数列です(0≤i
したがって、入力がnums =[1、4、7、10、13、20、16]のような場合、出力は6になります。サブシーケンス[1、4、7、10、13、16]は算術演算です。連続する各要素の差が3であるためです。
これを解決するには、次の手順に従います-
- n:=arrのサイズ
- n <=1の場合、
- return n
- res:=0
- dp:=空のマップ。デフォルトでは、キーが見つからない場合は1が格納されます
- 1からn-1の範囲のiの場合、do
- 0からi-1の範囲のjの場合、do
- diff:=arr [i] --arr [j]
- dp [i、diff]:=dp [j、diff] + 1
- res:=resとdp[i、diff の最大値
- 0からi-1の範囲のjの場合、do
- return res
例(Python)
理解を深めるために、次の実装を見てみましょう-
from collections import defaultdict class Solution: def solve(self, arr): n = len(arr) if n <= 1: return n res = 0 dp = defaultdict(lambda: 1) for i in range(1, n): for j in range(i): diff = arr[i] - arr[j] dp[i, diff] = dp[j, diff] + 1 res = max(res, dp[i, diff]) return res ob = Solution() nums = [1, 4, 7, 10, 13, 20, 16] print(ob.solve(nums))
入力
[1, 4, 7, 10, 13, 20, 16]
出力
6
-
Pythonで最も長いバランスの取れたサブシーケンスの長さを見つけるプログラム
括弧「(」および「)」を含む文字列sがあるとすると、バランスの取れた括弧の最長のサブシーケンスの長さを見つける必要があります。 したがって、入力がs =())(()(の場合、出力は4になります。これは、 ()()のようなサブシーケンスを取ることができるためです。 これを解決するには、次の手順に従います- res:=0 n:=sのサイズ close:=0 n-1から0の範囲のiの場合、1ずつ減らします。 s[i]が)と同じ場合、 close:=close + 1 それ以外の場合 0の場合、 close:=close-1 r
-
Pythonで指定されたリストからk個の最長の単語を検索する
さまざまな長さの多くの単語を含むリストから、上位n個の最長の単語を選択する必要があるシナリオがあります。この記事では、それを実現するためのさまざまなアプローチを紹介します。 count()およびsorted()を使用 まず、リストの要素を逆の順序で並べ替えて、リストの先頭で最も長い単語が使用できるようにします。次に、各単語の長さを見つけて、カウントの結果を変数に追加します。最後に、必要な最長の単語の数を切り取ります。 例 from itertools import count def longwords(l, x): c = count() &nb