class Solution {
public:
void sortColors(int A[], int n) {
int cntZero = 0, cntTwo = 0;
for(int i = 0; i < n; ++i){
cntZero += A[i] == 0 ? 1 : 0;
cntTwo += A[i] == 2 ? 1 : 0;
}
int right = n - 1;
for(int i = 0; i < cntTwo; ++i){
A[right--] = 2;
}
int left = 0;
for(int i = 0; i < cntZero; ++i){
A[left++] = 0;
}
for(int i = left; i <= right; ++i){
A[i] = 1;
}
return;
}
};
开始想直接移动元素,后来发现,这样有问题,就是直接修改原数组会覆盖还没有遍历的值,索性直接数个数=。=