概述
该博客结合leetcode原题介绍了可以使用二分法的常见题目。
适合二分法题目需要具备如下特点:
(1)单调递增
(2)存在上下界
(3)通过索引访问
例题
2.1 x 的平方根
#Leetcode 69 x 的平方根
(1)二分法
# coding = utf-8
def subSqrt(left, right, x):
mid = (left + right) / 2
while abs(mid * mid - x) > 0.1:
if mid * mid > x:
left, right = left, mid
else:
left, right = mid, right
mid = (left + right) / 2
return mid
def sqrt(x):
left = 0
right = x
return subSqrt(0, x, x)
if __name__=="__main__":
x = 10
print(sqrt(x))
(2)牛顿法