023-力扣刷题-69--x-的平方根
实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4 输出: 2 示例 2:
输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Solution(object): def mySqrt(self, x): """ :type x: int :rtype: int """ if x <2: return x left,right =1,x//2 #最小从1开始,最大的值顶多是除以2的整数 while left <=right: mid = left+( right-left)//2 #求的是left和right的中间值 if mid > x/mid: #这行代码的意思就是说现在的这个mid值偏大mid**2 = x 这么去算的 right = mid -1 #这个就是说偏大的话就让右边的值左移缩小范围,让中间值减小 else: left = mid+1 #如果我们求的mid比较小的话就让left右移增大mid的值 return left - 1 #这个的话是因为进了最后循环结束的条件left肯定要多加1最后减掉1 |