gpt4 book ai didi

python - 类二进制搜索

转载 作者:行者123 更新时间:2023-12-02 01:46:02 24 4
gpt4 key购买 nike

这是一个理论问题。

exercise from leetcode作为基础。

我的任务解决方案是二分搜索。但问题不在于它。

我发现完美的solution在“讨论”选项卡上。

(下一个代码是从那里获取的)

class Solution:
def mySqrt(self, x: int) -> int:
low, high= 1, x
while low<high:
high = (low + high) // 2
low = x // high

return high

它工作完美。我的问题是:

对于常规二分搜索,我们取序列的中间部分,并根据比较结果删除多余的部分(左或右),然后重复直到结果。

这个实现是基于什么?

该解决方案从开始处就在中小部分之后剪切了部分序列。

最佳答案

此代码不基于二分搜索。相反,它基于将古老的“Babylonian method”改编为整数算术。这反过来又可以被看作是牛顿寻找方程根的更通用方法的一个实例。

在此代码中,保留不同的 lowhigh 变量并不重要。例如,更常见的编码方式如下:

def intsqrt(n):
guess = n # must be >= true floor(sqrt(n))
while True:
newguess = (guess + (n // guess)) // 2
if guess <= newguess:
return guess
guess = newguess

但要更加小心地找到更好的初始猜测。

顺便说一句,二分搜索每次迭代都会将“好位”的数量增加 1。此方法大约使每次迭代的“好位”数量加倍,因此猜测越接近最终结果,效率就越高。

关于python - 类二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70884093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com