75. 颜色分类
使用库函数(测试)
class Solution { public: void sortColors(vector<int>& nums) { sort(nums.begin(),nums.end()); } };统计个数,再赋值:
class Solution { public: void sortColors(vector<int>& nums) { int count0=0,count1=0,count2=0; for(int i=0;i<nums.size();i++){ if(nums[i]==0)count0++; else if(nums[i]==1) count1++; else count2++; } for(int i=0;i<nums.size();i++){ if(i<count0) nums[i]=0; else if(i>=count0&&i<count1+count0) nums[i]=1; else nums[i]=2; } } };上面方法的改进:
class Solution { public: void sortColors(vector<int>& nums) { //start表示0的开始位置,count1表示1的个数,count2表示2的个数 int start=0,count1=0,count2=0; for(int i=0;i<nums.size();i++){ if(nums[i]==0){ //因为0在最前面,所有可以先将0的值写入 nums[start]=0; start++; } else if(nums[i]==1) count1++; else count2++; } for(int i=start;i<nums.size();i++){ if(i<count1+start) nums[i]=1; else nums[i]=2; } } };834. 树中距离之和 树中距离之和这个题太难了吧。。。自己写的思路没错到时超时。。。官方答案动态规划又不好理解。。。写那么长。。。