给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5)...
时间: 2024-02-13 16:00:49 浏览: 68
69. x 的平方根给你一个非负整数 x ,计算并返回 x 的 算术平方根 由于返回类型是整数,结果只保留 整数部分
好的,这是一道比较经典的算法题。可以使用二分查找的思想来解决这个问题。具体步骤如下:
1. 定义左右边界,分别为 0 和 x。
2. 在左右边界之间进行二分查找,每次将中间值 mid 的平方与 x 进行比较。
3. 如果 mid 的平方小于等于 x,则将左边界 left 更新为 mid + 1。
4. 如果 mid 的平方大于 x,则将右边界 right 更新为 mid - 1。
5. 最终的结果为右边界 right。
下面是 C++ 代码实现:
```cpp
class Solution {
public:
int mySqrt(int x) {
int left = 0, right = x;
while (left <= right) {
long mid = left + (right - left) / 2;
if (mid * mid <= x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return right;
}
};
```
注意,这里的 mid 需要用 long 类型来存储,否则可能会出现溢出的情况。
阅读全文