题目
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
注意:
不能使用代码库中的排序函数来解决这道题。
示例:
首先:分析一下题目,按照红色、白色、蓝色顺序排列,所以这个0、1、2是固定的。只要统计输入列表中0、1、2的次数,然后重复就可以;
所以步骤就清楚了:
1、统计次数
count=[0,0,0]
for i in nums:
if i == 0:
count[0]+=1
if i==1:
count[1]+=1
if i==2:
count[2]+=1
2、固定列表[0,1,2],进行次数的复写,放入一个新列表
ss=[0,1,2]
index=0
sss=[]
for i in count:
while i>0:
sss.append(ss[index])
i-=1
index+=1
完整代码:
class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
count=[0,0,0]
for i in nums:
if i == 0:
count[0]+=1
if i==1:
count[1]+=1
if i==2:
count[2]+=1
ss=[0,1,2]
index=0
sss=[]
for i in count:
while i>0:
sss.append(ss[index])
i-=1
index+=1