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
-
配列の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '
-
配列内の最大の要素を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列を指定すると、配列内で最大の要素を見つける必要があります。 アプローチ maxを最初の要素として初期化します。 この後、指定された配列を2番目の要素から最後までトラバースします。 トラバースされたすべての要素について、現在のmaxの値と比較します maxより大きい場合、maxが更新されます。 それ以外の場合、ステートメントはを超えます 以下の実装を見てみましょう- 例 def largest(arr,n): #maximal element