前言
持续更新了
正文
问题来源
本问题来自leetcode上的374题。
问题描述
猜数字游戏的规则如下:
每轮游戏,系统都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。
如果你猜错了,系统会告诉你,你猜测的数字比系统选出的数字是大了还是小了。
你可以通过调用一个预先定义好的接口 guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0):
示例 1:
输入: n = 10, pick = 6
输出: 6
分析:
/**
* Forward declaration of guess API.
* @param 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
* func guess(num int) int;
*/
func guessNumber(n int) int {
l, r := 0, n
for l <= r {
mid := (l+r)/2
ret := guess(mid)
if ret == 0 {
return mid
} else if ret < 0 {
r = mid-1
} else {
l = mid+1
}
}
return r
}
总结:
勤思考。
结语
不管怎么样好好加油。