LeetCode374-猜数字大小(二分查找)
题目描述得不清不楚
1、n是题目给的猜数字范围,从1~n里面猜
2、每次猜的时候,调用guess函数,告诉你猜数字的情况。
public int guessNumber(int n) { //n是一个最大值 //从1~n里面找一个数字 int low = 1; int high = n; while(true){ int mid = (low+high)/2; int result = guess(mid); //他的数字比较小,就是我猜的大了 if(result==-1){ high = mid-1; }else if(result == 1){ low = mid+1; }else{ return mid; } } }
真恶心,一看就是溢出了。
改成这样就好了
int mid = low+(high-low)/2;
加上差距的一半,其实就是 加起来的一半了呗
0ms.....牛逼