只需排序三种,可以记录0和1的个数,然后直接原地赋值
class Solution {
public:
void sortColors(vector<int> &nums) {
int zero = 0, one = 0;
for (auto &num: nums)
if (num == 0)
zero++;
else if (num == 1)
one++;
for (int i = 0; i < zero; i++)
nums[i] = 0;
for (int i = zero; i < zero + one; i++)
nums[i] = 1;
for (int i = zero + one; i < nums.size(); i++)
nums[i] = 2;
}
};