我需要猜一个数字。我只能看到我建议的数字是较低还是较高。性能非常重要,因此我想到了以下算法:
假设我要猜测的数字是600。
我从数字1000开始(或者为了获得更高的性能,它是先前数字的平均结果)。
然后,我检查1000是否高于或低于600。
然后,我将数字除以2(现在是500),并检查它是否小于或大于600。它是否小于600。
然后,找到差异并将其除以2,以以下方式检索新的数字:(1000 + 500)/2。结果为750。然后检查该数字。
等等。
这是最好的方法,还是有更聪明的方法呢?就我而言,每次猜测大约需要500毫秒,因此我需要在尽可能短的时间内猜测出很多数字。
我可以粗略地假设先前猜测的平均结果也接近即将到来的数字,因此我可以利用一种模式来发挥自己的优势。
是binary search
的,这样做是最有效的方法。Binary Search
是你所描述的 对于1到N之间的数字Binary Search
,O(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,但结果显示并非如此。我的解决方法是将数字转换为字符串,然后将其转换回
问题内容: 在Java中,所有数字类型都从java.lang.Number扩展。拥有如下所示的方法是否是一个好主意: 我担心双精度2.00000不等于int2的情况。这些是否由内置的equals处理?如果没有,有什么办法可以在Java中编写一个简单的数字比较功能?(可以使用apachecommons这样的外部库) 问题答案: 一个是 从来没有 到。此外,a 与a不同。 Java具有原始类型和引用类