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:=0
-
-
-
それ以外の場合
-
cnt:=cnt + 1
-
-
-
-
cntが0と同じでない場合、
-
-
最大:=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
-
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)
-
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