本文首发于我的博客:https://belindayang.cn/
题目:
leetcode69题
求一个非负数n的平方根
算法思路:
核心思想:二分查找
在1到n中进行查找,每次取中间元素mid求平方,如果求的平方值等于n或者求的平方值小于n且mid+1的平方值大于n,说明找到了目标值;如果mid+1的平方值大于n,说明应该在左边部分查找,否则在右边部分继续查找
代码如下:
class Solution(object):
def mySqrt(self, x):
"""
:type x: int
:rtype: int
"""
if x==0 or x==1:
return x
left=1
right=x
while(right>1):
num=(left+right)/2
temp=num*num
if temp<=x:
if temp==x or pow(num+1,2)>x:
return num
else:
left=num+1
else:
right=num-1
欢迎关注公众号:pipi的奇思妙想