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

バイナリ配列で1の最長の連続シーケンスを取得するために1に置き換えられる0のインデックスを検索します-PythonのSet-2


バイナリ配列が1つあるとします。 1の連続シーケンスの最大数を取得するには、1に置き換えることができる0の位置を見つける必要があります。

したがって、入力が[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

  1. Pythonでの最長の連続シーケンス

    整数の配列があるとします。連続する最長の要素シーケンスの長さを見つける必要があります。したがって、入力が[100、4、250、1、3、2]の場合、最長の連続シーケンスは[1,2,3,4]であるため、回答は4になります。 これを解決するには、次の手順に従います- 配列を最長:=0に設定します 範囲配列内のiの場合- i –1が-にない場合 現在:=i、ストリーク:=0 私が-にいる間 iを1増やし、ストリークを1増やします 最長:=最長とストリークの最大値 最長で戻る 例 理解を深めるために、次の実装を見てみましょう- cla

  2. Pythonで文字列内の最長の反復配列を見つける方法は?

    defaultdictを使用して、入力文字列の各位置から始まる各サブ文字列を集計できます。 getsubsメソッドは、呼び出されるたびに小さいサブ文字列を生成するジェネレータメソッドです。 例 from collections import defaultdict def getsubs(loc, s):     substr = s[loc:]     i = -1     while(substr):         yield substr       &nb