问题描述

  1. 一个数组中只包含0,1,2三个数,将0放到数组最左边,2放到数组最右边,1在数组中间

https://leetcode-cn.com/problems/sort-colors/

思路

  1. 三个指针,p0,p,p2
  2. 循环条件(p <= p2)
  3. ==0时,交换p0和p并且p0和p都加1,这是因为从前面交换来的要么是0,要么是1,如果是1还好说,下一次p还可以向前走,但是如果是0的话,p就卡死在这了。
  4. ==2时,交换p和p2,并p2–;
  5. 其他情况,p++;
  6. p和p2不能同时变化。
  7. 一定要把逻辑搞清楚,不能重复判断。