二分~
关于二分,做了一个小总结:
1.加不加“=”的问题:看while循环里面l,h是否都变化(即是否都会缩进);都变化则需要l<=h;最后跳出循环的条件是l>h;返回那个看具体题目要求。
2.返回l还是h的问题:看while里的条件,若条件是l<h,则代表跳出循环的条件是l=h,故返回哪个都行;
若条件是l<=h,则代表跳出循环的条件是l>h,返回哪个看题目要求;
var findMin = function(nums) {
let l=0,h=nums.length-1;
while(l<h){
var m=Math.floor(l+(h-l)/2);
if(nums[m]>=nums[h]) l=m+1;
else h=m;
}
return nums[l]; //这里写l或者h都可以,因为退出循环的条件就是l=h.
};