zoukankan      html  css  js  c++  java
  • Leecode 69 x的平方根

    实现 int sqrt(int x) 函数。

    计算并返回 x 的平方根,其中 是非负整数。

    由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

    示例 1:

    输入: 4
    输出: 2

    示例 2:

    输入: 8
    输出: 2
    说明: 8 的平方根是 2.82842..., 
         由于返回类型是整数,小数部分将被舍去。
    • 第一次尝试

    解题思路:

    将元素的平方逐一和x比较,大于x就返回前一个元素

    结果循环中要比较的次数太多,超出了时间限制

    def mySqrt( x):
       if x==0 or x==1:
           return x
    for i in range(x+1):
    if i*i>x:
    return i-1
    
    
    • 第二次尝试

    解题思路:

    采用二分查找法来解题,x每次都和中间的mid和mid+1的平方作比较,这样大大减少了比较的次数

    def mySqrt( x):
       if x==0 or x==1:
           return x
       front=1
       end=x
       while front<=end:
           mid=(front+end)//2
           if mid**2<=x<(mid+1)**2:
               return mid
           elif mid**2>x:
               end=mid-1
           else:
               front=mid+1#注意front=mid+1
  • 相关阅读:
    周总结5
    《梦段代码》阅读笔记01
    NABCD
    结对开发(四则运算)
    《人月神话》阅读笔记03
    周总结4
    移动端疫情显示
    周总结3
    《人月神话》阅读笔记02
    软件工程第四周作业
  • 原文地址:https://www.cnblogs.com/Aprilnn/p/9341147.html
Copyright © 2011-2022 走看看