题解 | #求平方根#
求平方根
http://www.nowcoder.com/practice/09fbfb16140b40499951f55113f2166c
#
#
# @param x int整型
# @return int整型
#
class Solution:
def sqrt(self , x ):
# write code here
#二分法代码写法
if x <= 0: #特殊情况判断
return 0
l = 1 #定义左边最小值
r = x #数平方根一定小于数本身,定义右边最大值
while 1 : #循环次数未知,故写死循环重复
mid = (l+r)//2 #不断左右逼近
if mid <= x/mid and mid+1 > x/(mid+1):#若mid正好为平方根,那么mid=x/mid,此处向下取整,故返回mid值
return mid
elif mid < x/mid: #mid取小了的时候,增大左边,使中值变大
l = mid + 1
else: #mid取大了的时候,减小右边,使中值变小
r = mid - 1
代码改写自java题解,关键点在于不断更新左右边,以及和x/mid做比较求近似
