算法-颜色分类

《算法-颜色分类》

故人西辞黄鹤楼,烟花三月下扬州。
孤帆远影碧空尽,唯见长江天际流。

今天吃了一顿送别餐,一个一起工作的很久的小伙伴将要离开。。。

前言

给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,
使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

解题思想

1.定义三个变量a、b、c分别代表红黄蓝三种球的个数
2.遍历数组分别求出a、b、c的值
3.依次往数组中插入相应的值

代码实现

void sortColors(vector<int>& nums) {
    int a = 0, b = 0, c = 0;
    int len = nums.size();
    
    for(int i = 0; i < len; i++){
        if(nums[i] == 0){
            a++;
        }else if(nums[i] == 1){
            b++;
        }else if(nums[i] == 2){
            c++;
        }
    }
    
    nums.clear();
    nums.insert(nums.begin(),c,2);
    nums.insert(nums.begin(),b,1);
    nums.insert(nums.begin(),a,0);
 }
点赞