件名の説明:
配列与えられた n個の 赤、白または青色のオブジェクト、それらを並べ替える インプレース 同じ色のオブジェクトは、赤、白、青の順に色で、隣接していることになります。
ここで、我々は、それぞれ、赤、白、青の色を表すために整数0、1を使用し、2う。
注:この問題のためのライブラリのソート機能を使用すると仮定されていません。
例:
入力:[2,0,2,1,1,0] 出力:[0,0,1,1,2,2]
ファローアップ:
- むしろ単純溶液は、計数ソートを使用して2つのパス・アルゴリズムです。
まず、次いで0、1と2の続いての合計数と配列を上書きし、0の、1の、及び2のアレイカウント数を繰り返します。 - あなただけの一定のスペースを使用して1パスアルゴリズムを考え出すだろうか?
コードの実装:
1 DEF sortColors(自己、NUMS): 2 I = J = 0 3 のための K にはxrange(LEN(NUMS)): 4 、V = NUMS [K] 5 NUMS [K] = 2 6 場合 V <2 : 7 NUMS [ J 1 = 8 、J = + 1 9の 場合のV == 0: 10 NUMS [I] = 0 11 I + = 1