Solution of Guess Number Higher or Lower

本文介绍了一个猜数字游戏的解决方案,通过使用二分查找法,有效地减少了猜测次数,提高了游戏效率。文章详细解释了二分查找的原理,并提供了一段Go语言的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

We are playing the Guess Game. The game is as follows:

I pick a number from 1 to n. You have to guess which number I picked.

Every time you guess wrong, I’ll tell you whether the number is higher or lower.

You call a pre-defined API guess(int num) which returns 3 possible results (-1, 1, or 0):

-1 : My number is lower
1 : My number is higher
0 : Congrats! You got it!

Example :

Input: n = 10, pick = 6
Output: 6

Ideas of solving problems

The question is to compare the size of the Numbers to see if they are the right answer.We guess the Numbers by dichotomy.Compared with enumeration, dichotomy takes less time and is more effective.The traversal distance can be shortened by half by dichotomy.My first attempt was with enumeration, but the time was out of scope.Therefore, using dichotomy, can effectively reduce the running time. The time complexity is O(n), and space complexity is O(n). The memory consumption is 2Mb.

Code

func guessNumber(n int) int {
	a , b := 1, n
	for a < b {
		mid := a + (b - a) / 2
		if guess(mid) == 0{
			return mid
		}else if guess(mid) == 1{
			a = mid + 1
		}else{
			b = mid - 1
		}
	}
	return a
}

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/guess-number-higher-or-lower

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值