Leetcode 75. 色分類(Python 3)


75.色分類
赤、白、青の合計n要素を含む配列を指定し、同じ色の要素が隣接し、赤、白、青の順に並べ替えます.
この問題では、0、1、2の整数を使用して、赤、白、青をそれぞれ表します.
注意:コードライブラリのソート関数を使用してこの問題を解決することはできません.
例:
  : [2,0,2,1,1,0]
  : [0,0,1,1,2,2]

ステップ:
  • 直感的な解決策は、カウントソートを用いた2つのスキャンアルゴリズムである.まず、0、1、2要素の個数を反復して計算し、0、1、2のソートで現在の配列を書き換えます.
  • 定数空間のみを使用したスキャンアルゴリズムを考え出せますか?

  •  
    コード:
    class Solution:
        def sortColors(self, nums):
            """
            :type nums: List[int]
            :rtype: void Do not return anything, modify nums in-place instead.
            """
            c0,c1,c2 = 0,0,0
            for i in nums:
                if i == 0:
                    c0 += 1
                if i == 1:
                    c1 += 1
                if i == 2:
                    c2 += 1 
            nums[:c0] = [0] * c0
            nums[c0:c0+c1] = [1] * c1
            nums[c0+c1:] = [2] * c2