首页 > 其他 > 详细

[LeetCode] Sqrt(x) 二分搜索

时间:2015-03-24 18:56:27      阅读:139      评论:0      收藏:0      [点我收藏+]

Implement int sqrt(int x).

Compute and return the square root of x.

 

Hide Tags
 Math Binary Search
 
 

    并未使用牛顿迭代,实现是通过二分搜索实现的,需要注意判断时候 x* x<K 容易溢出,所以可以改为  x< k/x。
 
#include <iostream>
using namespace std;

class Solution {
public:
    int sqrt(int x) {
        if(x <2)    return x;
        int lft =1 ,rgt = x;
        int mid = (lft+rgt)/2;
        while(lft+1<rgt){
            if(mid == x/mid)    return mid;
            if(mid < x/ mid){
                lft = mid;
            }
            else{
                rgt = mid;
            }
            mid = (lft+rgt)/2;
        }
        if( rgt<=mid/rgt)   return rgt;
        return lft;
    }
};

int main()
{
    Solution sol;
    for(int i =1;i<50;i++)
        cout<<sol.sqrt(i)<<endl;
    return 0;
}

 

[LeetCode] Sqrt(x) 二分搜索

原文:http://www.cnblogs.com/Azhu/p/4363577.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!