Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで一定の差がある最長の算術サブシーケンスの長さを見つけるプログラム


数値のリストnumsと別の値diffがあるとすると、サブシーケンス内の連続する数値の差がdiffと同じである、最長の算術サブシーケンスの長さを見つける必要があります。

したがって、入力がnums =[-1、1、4、7、2、10] diff =3のような場合、出力は4になります。これは、[1、4、7、10のようなサブシーケンスを選択できるためです。 ]。

これを解決するには、次の手順に従います-

  • seen:=空の辞書、キーが存在しない場合のデフォルト値は0です
  • mx:=0
  • numsのxごとに、
    • x --diffが表示されている場合は、
      • sawed [x]:=saw [x --diff] + 1
    • それ以外の場合、
      • sawed [x]:=1
    • mx:=mxの最大値とseen[x]
  • return mx

理解を深めるために、次の実装を見てみましょう-

from collections import defaultdict
def solve(nums, diff):
   seen = defaultdict(int)
   mx = 0
   for x in nums:
      if x - diff in seen:
         seen[x] = seen[x - diff] + 1
      else:
         seen[x] = 1
      mx = max(mx, seen[x])
   return mx

nums = [-1, 1, 4, 7, 2, 10]
diff = 3
print(solve(nums, diff))

入力

[-1, 1, 4, 7, 2, 10], 3

出力

4

  1. Pythonで最長のアナグラムサブシーケンスの長さを見つけるプログラム

    2つの小文字の文字列SとTがあるとすると、最長のアナグラムサブシーケンスの長さを見つける必要があります。 したがって、入力がS =helloworld、T =hellorldの場合、出力は8になります これを解決するには、次の手順に従います- c:=新しいマップ、d:=新しいマップ 0からaのサイズの範囲のiの場合、実行 cのa[i]の場合、 c [a [i]]:=c [a [i]] + 1 それ以外の場合 c [a [i]]:=1 0からbのサイズの範囲のiの場合、実行 dのb[i]の場合、 d [b [i]]:=

  2. 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