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

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

  1. 配列内の最大の要素を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n):    #maximal element

  2. nで割った配列乗算のリマインダーを見つけるためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 複数の数値と数値入力nが与えられた場合、除算可能なすべての数値にnを掛けた後、余りを出力する必要があります。 アプローチ まず、arr [i]%nのように余りを計算します。次に、この余りに現在の結果を掛けます。 乗算後、オーバーフローを避けるために同じ余りを取ります。これは、モジュラー演算の分配法則に準拠しています。 ( a * b) % c = ( ( a % c ) * ( b % c ) ) % c 例 def findremainder(arr, lens, n):   &n