题目:
题目截图:
解题步骤:
用到了二分搜索
1.从数组的中间元素开始,如果中间元素正好是目标值,则搜索过程结束
2.如果目标值大于或者小于中间元素,则在数组大于或小于中间元素的那一半查找
代码:
/**
* Forward declaration of guess API.
* @param {number} num your guess
* @return -1 if num is lower than the guess number
* 1 if num is higher than the guess number
* otherwise return 0
* var guess = function(num) {}
*/
/**
* @param {number} n
* @return {number}
*/
var guessNumber = function (n) {
let low = 1;
let high = n;
while (low <= high) {
const mid = Math.floor((low + high) / 2);
const res = guess(mid);
// console.log('mid', mid);
// console.log('res', res);
if (res === 0) {
return mid;
} else if (res === 1) {
low = mid + 1;
} else {
high = mid - 1;
}
}
};
时间复杂度分析:
时间复杂度是O(logn)
空间复杂度分析:
空间复杂度是O(1)
怎么样,是不是很简单,你学会了吗 ?
如果这篇文章能够帮助到您,希望您不要吝惜点赞👍👍和收藏💖💖,您的支持是我继续努力的动力 💪💪 !!!