Given an array with n objects colored red, white or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white and blue.
Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.
Note: You are not suppose to use the library’s sort function for this problem.
Example:
Input: [2,0,2,1,1,0]
Output: [0,0,1,1,2,2]
Two pointers
left points to the position that 0 ends
right points to the position that 2 begins
class Solution:
def sortColors(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
left=0
right=len(nums)-1
index=0
for i in range(len(nums)):
if nums[index]==2:
nums[index],nums[right]=nums[right],nums[index]
right=right-1
elif nums[index]==0:
nums[index],nums[left]=nums[left],nums[index]
left=left+1
index=index+1
else:
index=index+1