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

Pythonを使用して1つの要素を削除した後、1の最長のサブ配列を見つけるプログラム


numsというバイナリ配列があるとすると、そこから1つの要素を削除できます。結果の配列に1のみが含まれている、空でない最長のサブ配列のサイズを見つける必要があります。そのようなサブ配列がない場合は、0を返します。

したがって、入力がnums =[1,0,1,1,1,0,1,1,0]のような場合、位置5から0を削除することでサブ配列[1を取得できるため、出力は5になります。 、1,1,1,1]5つの1があります。

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

  • 0がnumsでない場合、

    • numsの戻りサイズ-1

  • 1がnumsでない場合は、

    • 0を返す

  • a:=新しいリスト

  • cnt:=0

  • numsの各iについて、実行します

    • iが0と同じ場合、

      • cntが0と同じでない場合、

        • の最後にcntを挿入します
        • cnt:=0

      • の最後にiを挿入します
      • それ以外の場合

        • cnt:=cnt + 1

  • cntが0と同じでない場合、

    • の最後にcntを挿入します
  • 最大:=0

  • 0からaのサイズの範囲のiの場合、実行

    • a [i]が0と同じでない場合、

      • 次のイテレーションに行く

    • a [i]が0と同じで、iがa-1のサイズと同じである場合、

      • Max:=Maxとa[i-1]

        の最大値
    • それ以外の場合、a [i]が0と同じで、iが0と同じである場合、

      • 最大:=最大およびa [i + 1]

        の最大値
    • それ以外の場合、a [i]が0と同じ場合、

      • 最大:=最大および(a [i + 1] + a [i-1])

        の最大値
  • Maxを返す

def solve(nums):
   if 0 not in nums:
      return len(nums)-1
   if 1 not in nums:
      return 0
      a = []
      cnt = 0
      for i in nums:
         if i == 0:
            if cnt != 0:
               a.append(cnt)
               cnt = 0
            a.append(i)
         else:
            cnt += 1
      if cnt!=0:
         a.append(cnt)
      Max = 0
      for i in range(len(a)):
         if a[i] != 0:
            continue
         if a[i] == 0 and i == len(a)-1:
            Max = max(Max,a[i-1])
         elif a[i] == 0 and i == 0:
            Max = max(Max,a[i+1])
         elif a[i] == 0:
            Max = max(Max,a[i+1]+a[i-1])
   return Max
nums = [1,0,1,1,1,0,1,1,0]
print(solve(nums))

入力

[1,0,1,1,1,0,1,1,0]

出力

5

  1. PythonでKをインクリメントした後、同等の最長のサブリストを見つけるプログラム

    numsとkという数のリストがあるとします。ここで、任意の1つの要素を1回インクリメントできる操作について考えてみます。最大でk回の操作を実行できる場合は、等しい要素を含む最長のサブリストを見つける必要があります。 したがって、入力がnums =[3、5、9、6、10、7] k =6のような場合、サブリスト[10、10を取得するために9を1回、6を4回インクリメントできるため、出力は3になります。 、10]。 これを解決するには、次の手順に従います- numsが空の場合、 0を返す wMax:=numsと同じサイズの両端キュー。ペアを挿入します(nums [0]、0)

  2. 2D配列でk番目に小さい要素を見つけるPythonプログラム

    1つのn×nユーザー入力整数行列が与えられ、kの値。私たちのタスクは、2D配列でk番目に小さい要素を見つけることです。ここでは、Pythonでheapq mudule.Heapキュー(またはheapq)を使用します。 Pythonでは、「heapq」モジュールを使用して利用できます。 Pythonでのこのモジュールの手法は、最小のヒープ要素がポップされるたびに(min heap).nsmallest()メソッドを使用して、データフレームまたはシリーズからn個の最小値を取得します。 例 Input Array is:: 10 20 20 40 15 45 40 30 32 33 30 50