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

Pythonで配列をソートするための最大チャンクを見つけるプログラム


配列番号があるとすると、配列をいくつかのパーティションに分割し、それぞれを個別に並べ替える必要があります。それらを連結した後、1つのソートされた配列を取得します。作成できるパーティションの最大数を見つける必要がありますか?

したがって、入力が[3,2,4,5,5]の場合、出力は4になります。これは、[3,2]、[4]、[5]、[5]のようなパーティションを作成できるためです。

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

  • real:=リスト番号を並べ替える

  • p1:=0、p2:=1、c:=0

  • 次のことを無限に行います。

    • フラグ:=True

    • tmp:=numsのサブリストを並べ替え[インデックスp1からp2-1]

    • 0からtmpのサイズまでの範囲のjについては、次のようにします

      • tmp[j]がreal[p1+ j]と同じでない場合、

        • フラグ:=False

        • p2:=p2 + 1

        • ループから出てきます

      • フラグがtrueの場合、

        • p1:=p2

        • p2:=p2 + 1

        • c:=c + 1

      • p1がnumsのサイズまたはp2>numsのサイズと同じである場合、

        • cを返す

理解を深めるために、次の実装を見てみましょう

def solve(nums):
   real=sorted(nums)
   p1,p2,c=0,1,0
   while True:

      flag=True
      tmp=sorted(nums[p1:p2])
      for j in range(len(tmp)):
         if tmp[j]!=real[p1+j]:
            flag=False
            p2+=1
            break

      if flag:
         p1,p2=p2,p2+1
         c+=1
      if p1==len(nums) or p2>len(nums):
         return c

nums = [3,2,4,5,5]
print(solve(nums))

入力

{3,2,4,5,5}

出力

4

  1. 配列の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '

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

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