https://leetcode.cn/problems/sort-colors/submissions/
    标签
    需要注意的点

    1. 两种指针方式,一种是取0和1,另一种是取0,2
    2. nums[i] 需要进行交换
    3. 注释写一些test case
    4. 解法1,参考https://www.bilibili.com/video/BV1Jg411M7Lp?spm_id_from=333.337.search-card.all.click&vd_source=e8e1b6de93e68d8ce8ab44afe5802a40
    1. class Solution:
    2. def sortColors(self, nums: List[int]) -> None:
    3. """
    4. Do not return anything, modify nums in-place instead.
    5. """
    6. '''
    7. 2,0,2,1,1,0
    8. ,0,1,1,2,2,0
    9. '''
    10. p0,p2 = 0, len(nums)-1
    11. i = 0
    12. while i <= p2:
    13. if nums[i] == 0:
    14. self.swap(nums, i, p0)
    15. i+=1
    16. p0+=1
    17. elif nums[i] == 1:
    18. i+=1
    19. else:
    20. self.swap(nums,i, p2)
    21. p2 -=1
    22. def swap(self, nums, index1, index2):
    23. nums[index1],nums[index2] = nums[index2],nums[index1]
    1. class Solution:
    2. def sortColors(self, nums: List[int]) -> None:
    3. """
    4. Do not return anything, modify nums in-place instead.
    5. """
    6. '''
    7. 1,0,1,2,0
    8. 0,0,0,1,2,0
    9. '''
    10. size = len(nums)
    11. p0, p1 = 0, 0
    12. for i in range(size):
    13. if nums[i] == 1:
    14. nums[i], nums[p1] = nums[p1], nums[i]
    15. p1 += 1
    16. if nums[i] == 0:
    17. nums[i], nums[p0] = nums[p0], nums[i]
    18. if p0 < p1:
    19. nums[i], nums[p1] = nums[p1], nums[i]
    20. p0 += 1
    21. p1 += 1