题目在这:https://leetcode-cn.com/problems/guess-number-higher-or-lower/
题目分析:
题目说的有点乱,实际上就是猜数字游戏,加入那你猜的是1,就通过guess函数把1传进去,返回-1 说明猜大了,返回1说明小了,返回0说明猜对了。
思路分析:
显然又是从一堆数里匹配符合条件的那个数。
又双叒叕是二分法。这周是二分法周,每日一题全是二分法。
关于二分法详解看我另一篇文章,清晰易懂,你肯定看的明明白白:https://blog.csdn.net/qq_38737428/article/details/117903312?spm=1001.2014.3001.5501
完整代码
left = 1
right = n
while left <= right:
mid = (left+right) // 2
if guess(mid) == 0:
return mid
elif guess(mid) == -1:
# 正确数字比猜的要小
right = mid - 1
elif guess(mid) == 1:
# 正确数字比猜的要大
left = mid + 1
如果有任何想不通的地方,看我二分法的详解,如果还是不懂,留言交流。