Python 中的对颜色进行排序
假设我们有一个包含 n 个对象的数组。这些对象被染成了红色、白色或蓝色,请对它们进行就地排序,以便同颜色的对象相邻。颜色按红、白、蓝的顺序。这里,我们将使用 0、1 和 2 分别表示红色、白色和蓝色。因此,如果数组为 [2,0,2,1,1,0],则输出将为 [0,0,1,1,2,2]
要解决这个问题,我们将遵循以下步骤 −
- 设置低 := 0、中 := 0 和高 := 数组长度 – 1
- 当 mid <= high 时
- 如果 arr[mid] = 0,则交换 arr[mid] 和 arr[low],并使 low 和 mid 均加 1
- 否则,当 arr[mid] = 2 时,交换 arr[high] 和 arr[mid],使 high 减 1
- 否则,将 mid 加 1
示例(Python)
让我们看看以下实现以获得更好的理解 −
class Solution(object): def sortColors(self, nums): low = 0 mid = 0 high = len(nums)-1 while mid<=high: if nums[mid] == 0: nums[low],nums[mid] = nums[mid],nums[low] low+=1 mid += 1 elif nums[mid] == 2: nums[high], nums[mid] = nums[mid], nums[high] high-=1 else: mid += 1 return nums ob1 = Solution() print(ob1.sortColors([2,0,2,1,1,0]))
输入
[2,0,2,1,1,0]
输出
[0,0,1,1,2,2]
广告