zoukankan      html  css  js  c++  java
  • 【LeetCode刷题】求平方根

    牛顿法

    1. class Solution {  
    2. public:  
    3.     int mySqrt(int x) {  
    4.         if (x == 0) return 0;  
    5.         double last=0;  
    6.         double res=1;  
    7.         while(res!=last)  
    8.         {  
    9.             last=res;  
    10.             res=(res+x/res)/2;  
    11.         }  
    12.         return int(res);  
    13.     }  
    14. };  

       

    二分法

    1. class Solution {  
    2. public:  
    3.     int mySqrt(int x) {  
    4.         //注:在中间过程计算平方的时候可能出现溢出,所以用long long  
    5.         long long i=0;  
    6.         long long j=x/2+1;//对于一个非负数n,它的平方根不会大于(n/2+1  
    7.         while(i<=j)  
    8.         {  
    9.             long long mid=(i+j)/2;  
    10.             long long res=mid*mid;  
    11.             if(res==x) return mid;  
    12.             else if(res<x) i=mid+1;  
    13.             else j=mid-1;  
    14.         }  
    15.         return j;  
    16.     }  
    17. };  
  • 相关阅读:
    Java 反射
    类中静态/普通/构造初始化顺序
    计算机世界中的0和1
    Java并发练习
    HashMap底层
    HashMap 与 Hashtable 的区别
    为什么重写了equals() 就要重写hashcode()
    干货型up主
    JSP页面元素
    重定向与请求转发的区别
  • 原文地址:https://www.cnblogs.com/xukaiae86/p/11713198.html
Copyright © 2011-2022 走看看