当前位置: 首页 > 后端技术 > Java

LeetCode-374-Guessthesizeofthenumber

时间:2023-04-01 16:10:36 Java

Guessthesizeofthenumber题目描述:猜数游戏的规则如下:在每一轮游戏中,我会从1到n中随机选择一个数字.请猜猜选择了哪个数字。如果你猜错了,我会告诉你你猜的数字比我选的数字大还是小。您可以通过调用预定义接口intguess(intnum)来获取猜测结果。有3种可能的返回值(-1、1或0):-1:我选的数比你猜的数小挑的数num0:我选的数和你猜的一样。恭喜!你猜对了!pick==num返回我选择的号码。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:二分查找法一个典型的二分查找问题。首先low的初值为1,high的初值为num。二分查找过程如下:循环的前提是low不大于high;那么mid的值为low+(high-low)/2,然后调用guess(num)方法判断;如果返回-1,则将high的值设置为mid-1,然后进行下一轮处理;如果返回1,则将low的值设置为mid+1,则进行下一轮处理;如果它返回0,则返回中间值,即所选数字。publicclassLeetCode_374extendsGuessGame{/***二分查找**@paramnum*@return*/publicstaticintguessNumber(intnum){intlow=1,high=num;while(low<=high){intmid=low+(high-low)/2;if(guess(mid)==-1){high=mid-1;}elseif(guess(mid)==0){returnmid;}elseif(guess(mid)==1){low=mid+1;}}返回-1;}publicstaticvoidmain(String[]args){System.out.println(guessNumber(2126753390));}}classGuessGame{/***假设计1702766719是最终的结果*guessAPI的前向声明。**@paramnum你的猜测*@return-1如果num低于猜测数*如果num高于猜测数则返回1*否则返回0*/publicstaticintguess(intnum){if(num>1702766719){返回-1;}elseif(num==1702766719){返回0;}else{返回1;}}}【每日留言】总之,岁月漫长,但值得等待