力扣 75. 颜色分类

68 阅读1分钟

🔗 leetcode.cn/problems/so…

题目

  • 数组由若干 0 1 2 组成
  • 原地从小到达排序,不能使用 sort

思路

  • 筛选出 0,swap 到开头
  • 筛选出 1,swap 到中间

代码

class Solution {
public:
    void sortColors(vector<int>& nums) {
        int index = 0;
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] == 0) {
                swap(nums[i], nums[index]);
                index++;
            }
        }

        for (int i = index; i < nums.size(); i++) {
            if (nums[i] == 1) {
                swap(nums[i], nums[index]);
                index++;
            }
        }
        
    }
};