【Leetcode】【python】Sqrt(x)

来源:互联网 发布:mac os10.13 10.12 编辑:程序博客网 时间:2024/06/05 15:40

题目大意

求一个数的平方根。结果返回整数,舍去小数,不是四舍五入

解题思路

二分搜索:值得注意的是右边可以直接设置为j=x/2+1,因为在(x/2+1)^2 > x。

牛顿迭代法:看到的一种解法
https://shenjie1993.gitbooks.io/leetcode-python/069%20Sqrt.html

代码

class Solution(object):    def mySqrt(self, x):        """        :type x: int        :rtype: int        """        left = 1        right = int(x/2+1)        if x == 0:            return 0        while left < right-1:  # 右边如果不是right-1会死循环下去因为不一定正好相等            mid = int(0.5 * (left + right))            # print left, right, mid            if mid * mid > x:                right = mid            elif mid * mid < x:                left = mid            else:                return mid        return left

总结

原创粉丝点击