图解
代码
var sortColors = function(nums) {
let zero = -1//nums[0....zero] = 0, zero的初值为-1,是因为要保证初始的nums[0....zero]是无意义的,如果zero=0,则会导致有一个元素等于0,但事实上不一定是第一位就是0
, two = nums.length;//nums[two......n-1] = 2 ,two等于数组长度和上面zero = 0道理一样
for (let i=0 ; i<two ;) {
if (nums[i] == 1) {
i ++;
} else if (nums[i] == 2) {
two--;
[nums[i], nums[two]] = [nums[two], nums[i]];
} else if (nums[i] == 0){
zero++;
[nums[i], nums[zero]] = [nums[zero], nums[i]];
i++;
}
}
};