LeetCode69:x的平方根

实现 int sqrt(int x) 函数。

计算并返回 x 的平方根,其中 x 是非负整数。

由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

示例 1:

输入: 4
输出: 2
示例 2:

输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
  由于返回类型是整数,小数部分将被舍去。

第一种方法直接通过数学计算,变换形式,可以参考LeetCode。

第二种二分查找,比直接循环遍历来得快,更加有效。

 1 class Solution {
 2 public:
 3     int mySqrt(int x) {
 4         int left=0,right=x;
 5         int mid=0,ans=0;
 6         while(left<=right){
 7             mid=left+((right-left)>>1);
 8             if((long long)mid*mid<=x){
 9                 left=mid+1;
10                 ans=mid;
11             }
12             else{
13                 right=mid-1;
14             }
15         }
16         return ans;
17     }
18 };
原文地址:https://www.cnblogs.com/rookiez/p/13214690.html