// C++ voidsortColors(vector<int>& nums){ int zero = 0, one = 0, two = 0; for (auto it = nums.begin(); it != nums.end(); ++it) { auto n = *it; if (n == 0) { ++zero; } elseif (n == 1) { ++one; } else { ++two; } } for (auto i = 0; i < nums.size(); ++i) { if (i < zero) { nums[i] = 0; } elseif (i < zero + one) { nums[i] = 1; } else { nums[i] = 2; } } }
// C++ voidsortColors(vector<int>& nums){ // [0-zero]:0, [zero+1,i-1]:1, [i,two]:2 int zero = -1; int two = (int)nums.size(); int i = 0; while (i < two) { auto n = nums[i]; if (n == 0) { swap(nums[i], nums[zero+1]); ++i; ++zero; } elseif (n == 1) { ++i; } else { swap(nums[i], nums[two-1]); --two; } } }