バイナリ配列で1の最長の連続シーケンスを取得するために1に置き換えられる0のインデックスを検索します-PythonのSet-2
したがって、入力が[1、1、0、0、1、0、1、1、1、1、0、1、1]の場合、出力は10になるため、配列は[1、 1、0、0、1、0、1、1、1、1、1、1、1]。
これを解決するには、次の手順に従います-
-
i:=0、
-
n:=Aのサイズ
-
count_left:=0、count_right:=0
-
max_i:=-1、last_i:=-1
-
count_max:=0
-
i
-
A [i]が1と同じ場合、
-
count_right:=count_right + 1
-
-
それ以外の場合
-
last_iが-1と同じでない場合、
-
count_right + count_left + 1> count_maxの場合、
-
count_max:=count_left + count_right + 1
-
max_i:=last_i
-
-
-
last_i:=i
-
count_left:=count_right
-
count_right:=0
-
-
i:=i + 1
-
-
last_iが-1と同じでない場合、
-
count_left + count_right + 1> count_maxの場合、
-
count_max:=count_left + count_right + 1
-
max_i:=last_i
-
-
-
max_iを返す
例
理解を深めるために、次の実装を見てみましょう-
def find_max_one_index(A): i = 0 n = len(A) count_left = 0 count_right = 0 max_i = -1 last_i = -1 count_max = 0 while i < n: if A[i] == 1: count_right += 1 else: if last_i != -1: if count_right + count_left + 1 > count_max: count_max = count_left + count_right + 1 max_i = last_i last_i = i count_left = count_right count_right = 0 i += 1 if last_i != -1: if count_left + count_right + 1 > count_max: count_max = count_left + count_right + 1 max_i = last_i return max_i A = [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1] print(find_max_one_index(A))
入力
[1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1]
出力
10
-
Pythonでの最長の連続シーケンス
整数の配列があるとします。連続する最長の要素シーケンスの長さを見つける必要があります。したがって、入力が[100、4、250、1、3、2]の場合、最長の連続シーケンスは[1,2,3,4]であるため、回答は4になります。 これを解決するには、次の手順に従います- 配列を最長:=0に設定します 範囲配列内のiの場合- i –1が-にない場合 現在:=i、ストリーク:=0 私が-にいる間 iを1増やし、ストリークを1増やします 最長:=最長とストリークの最大値 最長で戻る 例 理解を深めるために、次の実装を見てみましょう- cla
-
Pythonで文字列内の最長の反復配列を見つける方法は?
defaultdictを使用して、入力文字列の各位置から始まる各サブ文字列を集計できます。 getsubsメソッドは、呼び出されるたびに小さいサブ文字列を生成するジェネレータメソッドです。 例 from collections import defaultdict def getsubs(loc, s): substr = s[loc:] i = -1 while(substr): yield substr &nb