方法一 暴力排序法
-
方法一:暴力排序法
var sortColors = function(nums) {
nums=nums.sort((a,b)=>a-b)
return nums
};
复制代码
暴力排序,比较简单
方法二:双指针
-
方法二:双指针
var sortColors = function(nums) {
let p0=0 // 用来交换0
let p1=0 // 用来交换1
for(let i=0;i<nums.length;i++){
if(nums[i]==1){ // i指针如果等于1 与p1指针交换
let t=nums[i]
nums[i]=nums[p1]
nums[p1]=t
++p1 // p1向后移动一位
}
else if(nums[i]==0){ // i指针如果等于0 与p0指针交换
let t=nums[i]
nums[i]=nums[p0]
nums[p0]=t
if(p0<p1){ // 如果p0 < p1 我们此时已经将一些1排好了,此时交换一定会把1排出去,造成 错误,因此需要把交换出去的1重新排回去
let t=nums[i]
nums[i]=nums[p1]
nums[p1]=t
}
++p0 // p0,p1都向后移动一位
++p1
}
}
};
复制代码
详见leetcode:75 颜色分类
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END