Pythonでの最長のパフォーマンス間隔
時間リストがあるとすると、これは特定の従業員の1日あたりの労働時間数のリストです。ここで、1日は、労働時間数が(厳密に)8を超える場合にのみ、疲れた日と見なされます。1つの良好な間隔とは、疲れた日数がその数よりも厳密に多い日数の間隔です。疲れない日の。パフォーマンスが最も長い間隔の長さを見つける必要があります。したがって、入力が[9,9,6,0,6,6,9]のようである場合、出力は3になります。これは、パフォーマンスが最も長い間隔が[9,9,6]
>これを解決するには、次の手順に従います-
- temp:=0とans:=0を設定し、1つのマップdを作成し、corner:=0
- 0から時間配列のサイズまでの範囲のiの場合– 1
- temp:=temp + 1(時間[i]> 8の場合)、それ以外の場合は-1
- hours [i]> 8の場合、コーナー=1
- temp> 0の場合、ans:=ansの最大値とi+ 1
- tempがマップdにない場合、d [temp]:=i
- マップdでtemp– 1の場合、ans:=ansの最大値とi– d [temp – 1]
理解を深めるために、次の実装を見てみましょう-
例
class Solution(object): def longestWPI(self, hours): temp = 0 ans = 0 d = {} corner = 0 for i in range(len(hours)): temp += 1 if hours[i]>8 else -1 if hours[i]>8: corner = 1 if temp>0: ans = max(ans,i+1) if temp not in d: d[temp]=i if temp-1 in d: ans = max(ans,i-d[temp-1]) return max(ans,0) ob = Solution() print(ob.longestWPI([9,9,6,0,6,6,9]))
入力
[9,9,6,0,6,6,9]
出力
3
-
Pythonで最長の回文部分文字列
文字列Sがあるとします。Sで最も長い回文部分文字列を見つける必要があります。文字列Sの長さは1000であると想定しています。したがって、文字列が「BABAC」の場合、その場合、最長の回文部分文字列は「BAB」です。 これを解決するために、次の手順に従います 文字列の長さと同じ次数の正方行列を1つ定義し、Falseで埋めます 主対角要素をtrueに設定して、0からorder –1までのすべてのiに対してDP[i、i] =True start:=0 範囲2からS+1の長さのlの場合 0からSの長さの範囲のiの場合– l + 1 end:=i + l l =2の場合、 S [i]
-
Pythonで文字を繰り返さない最長の部分文字列
文字列があるとします。文字を繰り返さずに最長の部分文字列を見つける必要があります。したがって、文字列が「ABCABCBB」のような場合、長さ3の繰り返しの部分文字列があるため、結果は3になります。これが「ABC」です。 これを解決するために、次の手順に従います set i:=0、j:=0、情報を保存するために1つのマップを設定します ans:=0 whilej<文字列の長さs map [s [j]]の場合、 ans:=max(ans、j – i + 1) map [s [j]]:=j それ以外の場合 i:=map [s [j]] + 1 ans:=max(ans、