Pythonで互いに素な間隔にパーティション配列を見つけるプログラム
配列numがあるとすると、-
のように、それを左右と呼ばれる2つの異なるサブ配列に分割する必要があります。-
左側のサブアレイの各要素は、右側のサブアレイの各要素以下です。
-
左右のサブアレイは空ではありません。
-
左側のサブアレイのサイズは可能な限り最小です。
このような分割後の残りの長さを見つける必要があります。
したがって、入力がnums =[5,0,3,8,6]の場合、左側の配列は[5,0,3]になり、右側のサブ配列は[8,6]になるため、出力は3になります。
これを解決するには、次の手順に従います-
-
mx:=null、temp:=null、nmx:=null
-
temp2:=0
-
numsの各iについて、実行します
-
mxがnullと同じ場合、
-
mx:=i
-
nmx:=i
-
temp:=temp2
-
temp2:=temp2 + 1
-
次のイテレーションに行く
-
-
i> =mxの場合、
-
temp2:=temp2 + 1
-
i> nmxの場合、
-
nmx:=i
-
-
次のイテレーションに行く
-
-
それ以外の場合
-
temp:=temp2
-
temp2:=temp2 + 1
-
mx:=nmx
-
次のイテレーションに行く
-
-
-
温度+1を返す
例
理解を深めるために、次の実装を見てみましょう-
def solve(nums): mx = None temp = None nmx = None temp2 = 0 for i in nums: if(mx==None): mx = i nmx = i temp = temp2 temp2+=1 continue if(i>=mx): temp2+=1 if(i>nmx): nmx = i continue else: temp = temp2 temp2+=1 mx = nmx continue return temp+1 nums = [5,0,3,8,6] print(solve(nums))
入力
[5,0,3,8,6]
出力
3
-
配列内の最大の要素を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n): #maximal element
-
nで割った配列乗算のリマインダーを見つけるためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 複数の数値と数値入力nが与えられた場合、除算可能なすべての数値にnを掛けた後、余りを出力する必要があります。 アプローチ まず、arr [i]%nのように余りを計算します。次に、この余りに現在の結果を掛けます。 乗算後、オーバーフローを避けるために同じ余りを取ります。これは、モジュラー演算の分配法則に準拠しています。 ( a * b) % c = ( ( a % c ) * ( b % c ) ) % c 例 def findremainder(arr, lens, n): &n