题目分析:可以用双指针red和blue来记录当前已经就位的0序列和2序列的边界位置。
class Solution: def subsetsWithDup(self, nums): red = 0 blue = len(nums)-1 i = 0 while i <= blue: if nums[i] == 0: nums[i] = nums[red] nums[red] = 0 red += 1 i += 1 # 因为red在i之前或者和i相等 elif nums[i] == 2: nums[i] = nums[blue] nums[blue] = 2 blue -= 1 else: i += 1 return nums