系列文章目录
文章目录
前言
该文章总结力扣中使用二分查找分相关题目。
704.二分查找[简单]
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
function search(nums, target) {
let low = 0, high = nums.length - 1;
while (low <= high) {
const mid = Math.floor((high - low) / 2) + low;
const num = nums[mid];
if (num === target) {
return mid;
} else if (num > target) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
};
69.x 的平方根[简单]
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
// 二分法
function mySqrt (x) {
if (isNaN(x)) return NaN;
if(x===0 || x===1) return x;
let low=0,high=x, pivot=(low+high)/2,lastPivot;
do {
if(Math.pow(pivot,2)>x) {
high = pivot;
} else if(Math.pow(pivot,2)<x) {
low = pivot
} else {
return pivot
}
lastPivot = pivot;
pivot = (low+high)/2;
}
// 使用Number.EPSILON表示能够接受的最小误差范围
while(Math.abs(pivot-lastPivot) >= Number.EPSILON);
return pivot
}
// 切线逼近法
function mySqrt (x) {
if (isNaN(x)) return NaN;
if(x===0 || x===1) return x;
let val=x,last;
do{
last = val;
val = (val+x/val)/2
}while(Math.abs(val- last) >=Number.EPSILON);
return val;
}
50.Pow(x, n)[中等]
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x^n )。