给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
示例 1:
输入:x = 4
输出:2
示例 2:输入:x = 8
输出:2
解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/sqrtx
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
对不起我的大学老师们,完全忘记怎么求算术平方根了,压根不记得二分查找
两眼一抹黑完全没有想法,以下直接看了示例代码
LeetCode示例代码
class Solution(object):
def mySqrt(self, x):
"""
:type x: int
:rtype: int
"""
#l,r为二分查找左右值,res为结果
l,r,res=0,x,-1
while(l<=r):
#注意:这里要使用整除
mid=(l+r)//2
if(mid*mid<=x):
#如果当前中值小于等于x,则有可能是答案
res=mid
#l要继续逼近答案知道l>r
l=mid+1
else:
r=mid-1
return res