class Solution {
public:void sortColors(vector<int>& nums) {//先定0int i,j;i=0;j=0;int n=nums.size();while(j<n){if(nums[j]==0){int tmp=nums[j];nums[j]=nums[i];nums[i]=tmp;j+=1;i+=1;}else{j+=1;}}//对[i,n]处理,定1int i1=i;j=i1;while(j<n){if(nums[j]==1){int tmp=nums[j];nums[j]=nums[i1];nums[i1]=tmp;j+=1;i1+=1;}else{j+=1;}}}
};
三个动的变量:
第一时间想到控制变量
学习到的方法,分三类:排序 指针 赋值
我的是指针,但赋值太妙了
class Solution {
public:void sortColors(vector<int>& nums) {//学习 - 关注赋值 int n0,n1;n0=0;n1=0;for(int i=0;i<nums.size();i++){int num=nums[i];nums[i]=2;if(num<2){nums[n1++]=1;}if(num<1){nums[n0++]=0;}}}
};
隐藏保证
- n1 n0不会超过i
- 但其实说赋值,还是关注指针