Sqrt(x)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sqrt(x)相关的知识,希望对你有一定的参考价值。

Implement int sqrt(int x).

Compute and return the square root of x.

 

自己的代码:

 1 int mySqrt(int x) {
 2     if(x == 0 || x == 1)
 3         return x;
 4     int begin = 0;
 5     for(long long i = x / 2; i > 0; i /= 2){
 6         if(i * i == x)
 7             return i;
 8         if(i *i < x){
 9             begin = i;
10             break;
11         }
12     }
13     for(long long i = begin * 2; i > begin; i--){
14         if(i * i <= x)
15             return i;
16     }
17 }
  • 使用每次/2的方法

discuss方法:

class Solution {
public:
    int mySqrt(int x) {
        if(x <= 1) return x;
        int left = 1, right = x;
        while(left < right) {
            int mid = left + (right - left) / 2;
            if(mid <= x / mid ) {  //这里使用除,是为了方式mid * mid时大过int限制
                left = mid + 1;
            } else {
                right = mid;
            }
        }
        return left - 1;
    }
};
  • 使用二分法

以上是关于Sqrt(x)的主要内容,如果未能解决你的问题,请参考以下文章

Sqrt(x)

最强解析面试题:x 的平方根(Sqrt(x))

LeetCode(69):Sqrt(x)

最强解析面试题:x 的平方根(Sqrt(x))

LeetCode69 Sqrt(x)

leetcode二分 | 牛顿迭代法69_Sqrt(x)