码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode:Sqrt(x)

时间:2015-01-14 22:36:12      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

Implement int sqrt(int x).

Compute and return the square root of x.

分析:二分查找。首先确定二分查找终止的条件和返回条件,其次对于与数字有关的题要注意int的表示范围防止溢出(比如该题两个int相乘可能会超过int的范围,故采用x/mid与mid比较大小)。代码如下:

class Solution {
public:
    int sqrt(int x) {
        if(x == 0) return 0;
        if(x == 1 || x == 2 || x == 3) return 1;
        int l = 1, r = x/2;
        
        while(l <= r){
            int mid = (l + r)/2;
            if(x/mid == mid || x/mid > mid && x/(mid+1) < (mid+1)) return mid;
            if(x/mid < mid) r = mid-1;
            else if(x/mid > mid) l = mid + 1;
        }
    }
};

 

Leetcode:Sqrt(x)

标签:

原文地址:http://www.cnblogs.com/Kai-Xing/p/4224948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!