Sort Colors
思路一:使用一个vector记录每一个index出现的次数
class Solution { public: void sortColors(vector<int>& nums) { vector<int> count(3); for(int i=0; i<nums.size(); ++i) ++count[nums[i]]; int k = 0; for(int i=0; i<3; ++i) { for(int j=0; j<count[i]; ++j) nums[k++] = i; } } };
方法二:
使用两个指针记录0和1的边界
class Solution { public: void sortColors(vector<int>& nums) { int lt = 0, rt = nums.size()-1; for(int i=lt; i<=rt;) { if(nums[i] == 0) swap(nums[i++], nums[lt++]); else if(nums[i] == 2) swap(nums[i], nums[rt--]); else ++i; } } void swap(int &a, int &b) { int tmp = a; a = b; b = tmp; } };

浙公网安备 33010602011771号