返回信息流public int guessNumber(int n) {
int low = 1, high = n;
while (low <= high) {
// int mid = (low + high) / 2;
int mid = low+(high-low)/2;
if (guess(mid) == 0) {
return mid;
} else if (guess(mid) == 1) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
这个题中的mid元素取法,我按照Mid = (low+high)/2处理会报超时,
我看的答案写的是mid = low+(low+high)/2这样就可以ac
想问问这是为什么呢,想不明白。
原题连接:https://leetcode.com/problems/guess-number-higher-or-lower/
这是一条镜像帖。来源:北邮人论坛 / java / #51956同步于 2016/7/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
问个leetcode问题
nijian81
2016/7/27镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 mrcuber 的大作中提到: 】
: low+high 有可能超过int的范围,会溢出,所以超时。别人用high-low就能避免这个问题
嗯嗯,明白了~~
经常被low和high的边界值搞晕,while里面到底low<high还是low<=high;判断条件中,low到底是等于mid还是等于mid+1还是mid-1,high也一样。
今晚的左神的直播还看不?
【 在 jh1 的大作中提到: 】
: 经常被low和high的边界值搞晕,while里面到底low<high还是low<=high;判断条件中,low到底是等于mid还是等于mid+1还是mid-1,high也一样。
: 今晚的左神的直播还看不?
要看的,好好学算法。
牛客网,左神的直播。还是不错的。
【 在 ccccgn 的大作中提到: 】
: 可以问一下这是什么直播嘛?
: 经常被low和high的边界值搞晕,whi...