您的位置:首页 > 编程语言 > Java开发

LeetCode Sqrt(x) 整数平方根 java

2016-09-06 22:08 465 查看
http://oj.leetcode.com/problems/sqrtx/

求一个整数的平方根,如果该整数的平方根不是整数的话,返回平方根取整。

最简单办法,暴力搜索从1到N/2搜索但会TLE。

二分搜索,开始区间是1,终止区间是x。

AC代码:

[java] view
plain copy

 





public class Solution {  

    public int sqrt(int x) {  

        if(x<=1) {  

            return x;  

        }  

          

        int begin = 1;  

        int end   = x;  

        int middle = 0;  

        while(begin<=end) {  

            middle = begin + (end - begin)/2;  

            //不要写成middle*middle==x,会溢出  

            if(middle==x/middle) {  

                return middle;  

            } else {  

                if (middle<x/middle) {  

                    begin = middle + 1;  

                } else {  

                    end = middle - 1;  

                }  

            }  

              

        }   

        //结束条件end一定<begin,所以返回end  

        return end;  

    }  

}  

这道题还有一种变形是给你一个数x,判断是否是一个完全平方数。基本思路一样,二分搜索1到x/2,结束条件是begin的平方大于x。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode