Leetcode 75. 色分類(Python 3)
75.色分類
赤、白、青の合計n要素を含む配列を指定し、同じ色の要素が隣接し、赤、白、青の順に並べ替えます.
この問題では、0、1、2の整数を使用して、赤、白、青をそれぞれ表します.
注意:コードライブラリのソート関数を使用してこの問題を解決することはできません.
例:
ステップ:直感的な解決策は、カウントソートを用いた2つのスキャンアルゴリズムである.まず、0、1、2要素の個数を反復して計算し、0、1、2のソートで現在の配列を書き換えます. 定数空間のみを使用したスキャンアルゴリズムを考え出せますか?
コード:
赤、白、青の合計n要素を含む配列を指定し、同じ色の要素が隣接し、赤、白、青の順に並べ替えます.
この問題では、0、1、2の整数を使用して、赤、白、青をそれぞれ表します.
注意:コードライブラリのソート関数を使用してこの問題を解決することはできません.
例:
: [2,0,2,1,1,0]
: [0,0,1,1,2,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