当前位置: 首页 > 面试题库 >

猜数字时仅知道所提议的数字是较低还是较高?

赫连靖琪
2023-03-14
问题内容

我需要猜一个数字。我只能看到我建议的数字是较低还是较高。性能非常重要,因此我想到了以下算法:

假设我要猜测的数字是600。

  • 我从数字1000开始(或者为了获得更高的性能,它是先前数字的平均结果)。

  • 然后,我检查1000是否高于或低于600。

  • 然后,我将数字除以2(现在是500),并检查它是否小于或大于600。它是否小于600。

  • 然后,找到差异并将其除以2,以以下方式检索新的数字:(1000 + 500)/2。结果为750。然后检查该数字。

等等。

这是最好的方法,还是有更聪明的方法呢?就我而言,每次猜测大约需要500毫秒,因此我需要在尽可能短的时间内猜测出很多数字。

我可以粗略地假设先前猜测的平均结果也接近即将到来的数字,因此我可以利用一种模式来发挥自己的优势。


问题答案:

binary search的,这样做是最有效的方法Binary Search是你所描述的 对于1到N之间的数字Binary SearchO(log(n))时间会运行。

所以这是找到1-N之间的数字的算法

int a = 1, b = n, guess = average of previous answers;

while(guess is wrong) {

    if(guess lower than answer) {a = guess;}
    else if(guess higher than answer) {b = guess;}

    guess = (a+b)/2;

} //Go back to while


 类似资料:
  • 如何比较字符串二进制(而不是字母数字)?? Torrent规格: 键必须是字符串,并且以排序顺序出现(排序为原始字符串,而不是字母数字)。应该使用二进制比较,而不是特定于区域性的“自然”比较来比较字符串。 所以我需要按键对口供进行排序...但我没有这个规格。解释..有人吗? 更新:http://docs.oracle.com/cd/b19306_01/server.102/b14225/ch5li

  • 它可以传递给libphonenumber只有数字没有国家的格式 ISNumber可能(字符串电话) 例如,我想检查国际格式中的数字是否可能。我不想通过当地的国家代码,因为我不知道。 这个演示迫使我进入这个国家

  • 问题内容: 找出数字/变量在PHP中是奇数还是偶数的最简单,最基本的方法是什么?与mod有关吗? 我已经尝试了一些脚本,但是.. google目前无法交付。 问题答案: 您认为mod是一个不错的起点是正确的。这是一个表达式,如果是偶数则返回true,如果是奇数则返回false: 例: 输出: 甚至

  • 问题内容: 我听说散列(即将字符串或对象转换为数字)用于字符串等,因为比较数字比字符串更容易。如果为真,这是什么原因? 问题答案: 不一定是这种情况,但大多数时候可能是这样。 请考虑以下情况: 我想比较字符串“ apples”和“ oranges”。如果我只想确定“ apples” ==“ oranges”,我只需要比较每个字符串的第一个字符:’a’!=’o’=>“ apples”!=“ oran

  • 我的问题可能很傻,实际上我有一个解决这个问题的方法。但我仍然对它为什么会发生感兴趣。我的打字脚本文件中有两个数字。这是他们的定义。 在我的超文本标记语言输入框中,我也设置了属性type="number",我填充了一个数字为mAramValue。之后,我对这两个数字进行了比较。这是我所做的。 这是实际的控制台输出。 10通常大于5,但结果显示并非如此。我的解决方法是将数字转换为字符串,然后将其转换回

  • 问题内容: 如何确定给定数字是偶数还是奇数?我很久以来一直想弄清楚这个问题,而且还没到任何地方。 问题答案: 你可以使用模运算符,但这可能会很慢。如果是整数,则可以执行以下操作: 这是因为低位将始终设置为奇数。