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であるためです。
これを解決するには、次の手順に従います-
理解を深めるために、次の実装を見てみましょう-
例(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