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

Pythonで最長の個別のサブリストの長さを見つけるプログラム


numsという番号のリストがあり、そのすべての要素が一意である最も長い連続したサブリストの長さを見つける必要があるとします。

したがって、入力がnums =[6、2、4、6、3、4、5、2]のような場合、一意の要素の最長リストは[6、3、4、5]であるため、出力は5になります。 、2]。

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

  • head:=0、dct:=新しいマップ

  • max_dist:=0

  • 各インデックスiとnumsの要素numについて、実行します

    • numがdctにあり、dct [num]> =headの場合、

      • ヘッド:=dct [num] + 1

    • dct [num]:=i

    • i --head + 1> max_distの場合、

      • max_dist:=i-頭+1

  • max_distを返す

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

class Solution:
   def solve(self, nums):
      head = 0
      dct = {}
      max_dist = 0
      for i, num in enumerate(nums):
         if num in dct and dct[num] >= head:
            head = dct[num] + 1
         dct[num] = i
         if i - head + 1 > max_dist:
            max_dist = i - head + 1
   return max_dist
ob = Solution()
nums = [6, 2, 4, 6, 3, 4, 5, 2]
print(ob.solve(nums))

入力

[6, 2, 4, 6, 3, 4, 5, 2]

出力

5

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

  2. Pythonで連続して厳密に増加するサブリストの長さを見つけるプログラム

    numsと呼ばれる数値のリストがあるとすると、リストから1つまたは0の要素を削除できるときに、連続する厳密に増加するサブリストの最大長を見つける必要があります。 したがって、入力がnums =[30、11、12、13、14、15、18、17、32]のような場合、リストから18を削除すると、[11、 12、13、14、15、17、32]これは最も長く、連続していて、厳密に増加するサブリストであり、その長さは7です。 これを解決するために、次の手順に従います- n:=numsのサイズ pre:=サイズnのリストと1で埋める 1からn-1の範囲のiの場合、実行 nums