[leetcode] 69.Sqrt(x)

来源:互联网 发布:ios uitableview优化 编辑:程序博客网 时间:2024/05/17 06:29

题目:
mplement int sqrt(int x).

Compute and return the square root of x.
题意:
实现一个求平方的函数,参数是一个整数,返回的也是一个整数。
思路:
这道题很明显的使用二分查找。需要考虑特殊情况,比如说x是最大的整数之类的。
代码参见以下:

class Solution {public:    int mySqrt(int x) {        if(x == 0 || x == 1)return x;        else if(x < 0)return -1;        long long middle = x/2;        long long lx = x;        long long head = 1;        long long tail = lx;        while(true){            if((middle - 1) < 0)break;            long long temp = middle * middle;            long long add = (middle + 1)*(middle + 1);            long long minus = (middle - 1)*(middle - 1);            if(temp <= lx && add > lx)break;            else if(temp < lx){                head = middle + 1;            }            else if(temp > lx){                tail = middle - 1;            }            middle = (tail + head)/2;        }        return middle;    }};
0 0