当前位置: 代码迷 >> 综合 >> lc.69 x的平方根
  详细解决方案

lc.69 x的平方根

热度:52   发布时间:2024-02-19 19:25:06.0

实现 int sqrt(int x) 函数。

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

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

示例 1:

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

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

解法:

如果转为浮点数存储,结果会不正确,所以用整型存储即可

class Solution {
public:int mySqrt(int x) {int r = x,l = 0;if(x == 1) return 1;while(r - l > 1){int mid = (r+l) / 2;if(x / mid < mid)  r = mid;  //mid*mid > x会溢出,所以将不等式改为 x / mid < mid;else l = mid;}return l;}
};

 

  相关解决方案