题解 | #求平方根#

求平方根

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做比较求近似

全部评论

相关推荐

不愿透露姓名的神秘牛友
2025-12-20 18:14
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务