颜色分类-进阶解法

97 阅读1分钟

Leetcode 75原题

进阶解法:

  • 你可以不使用代码库中的排序函数来解决这道题吗?
  • 你能想出一个仅使用常数空间的一趟扫描算法吗?

var sortColors = function(nums) {
     //遍历一次即可O(n)
     let len = nums.length;
     let l=-1,r= len; //记录左右的范围
     let i=0;
     while(i<r){
         if(nums[i]< 1){
             [nums[l+1],nums[i]]=[nums[i],nums[l+1]];
             l++;
             i++;
         }else if(nums[i]==1){
             i++;
         }else if(nums[i]>1){
             [nums[i],nums[r-1]]=[nums[r-1],nums[i]];
             r--;
         }
     }
};