75色の分類leetcode

、赤、白、青、合計n個の配列の要素、in situでそれらをソートし、同じ色を持つように隣接する素子と、赤、白、青の順に配置所与。

この問題は、我々は、赤、白、青を表す0、1、2の整数を使用します。

 

 

クラスソリューション:
    デフsortColors(自己、NUMS:リスト[INT]) - >なし:
        「」」
        何かを返す代わりに、インプレースNUMSを変更しないでください。
        「」」
        right_boundary_of_0 = 0
        left_boundary_of_2 = LEN(NUMS) - 1
        私は= 0
        私しばらく<= left_boundary_of_2:
            NUMS [I] == 0の場合:
                middleValue = NUM​​S [right_boundary_of_0]
                NUMS [right_boundary_of_0] = 0
                NUMS [I] = middleValue
                right_boundary_of_0 + = 1 ****************** 1
                I + = 1 ****************** 1
            elifのNUMS [I] == 2:
                middleValue = NUM​​S [left_boundary_of_2]
                NUMS [left_boundary_of_2] = NUM​​S [I]
                NUMS [I] = middleValue
                left_boundary_of_2 - = 1
            そうしないと:
                I + = 1
            印刷(I、right_boundary_of_0、left_boundary_of_2、NUMS)

 

 

思考の問題を解決するために配置します。

  1. 3つのポインタが0の境界が、境界2、現在の反復の値、残されCURながら<= right_boundary_of_2。

   なぜなら変更の過去がゼロに2.コードマークに二行、および0のみを呼び出した後に残ったが、私は++、それはゴールの左に0に達します。

    実際には、ここで私はまだ後でたかった、非常に理解して考えました

おすすめ

転載: www.cnblogs.com/ChevisZhang/p/12436447.html