Leetcode NO.69 Sqrt(x)

来源:互联网 发布:藏民对十一世班禅 知乎 编辑:程序博客网 时间:2024/05/01 02:54

题目要求如下:

Implement int sqrt(int x).

Compute and return the square root of x.

题意就是自己implement一个sqrt()函数,不过input,output都是int型,就是返回整数(不是四舍五入),比如sqrt(3) = 1

我写的代码如下:

class Solution {public:    int sqrt(int x) {        if (x <= 0)        return 0;        else if (x == 1)        return 1;        else {        int low = 1;        int high = x;        int mid;        while (low <= high) {        mid = (high + low) / 2;        if (mid <= x / mid && (mid+1) > x / (mid+1))        return mid;    else if (mid > x / mid)     high = mid - 1;    else    low = mid + 1;          }        }    }};

本质上就是个binary search,

(1)如果mid * mid <= x, 并且(mid+1)*(mid+1)<x,则mid即为该值

(2)如果mid*mid > x,则舍弃所有大于mid的值,将high置于mid - 1

(3)如果(mid+1)*(mid+1)<=x,则舍弃所有小于mid的值,low置于mid+1

0 0
原创粉丝点击