题目描述
链接: https://leetcode-cn.com/problems/sqrtx/
这个题目说的是,你要实现一个函数,来计算非负整数 n 的平方根,平方根只需返回整数部分即可。
比如,使用你实现的函数来计算 9 的平方根是 3:
f(9) = 3
由于 8 的平方根是 2 点几,使用你实现的函数只需要返回整数部分 2 即可:
f(8) = 2
解题思路:
使用 二分法, 使得平方无限逼近答案.
这里没用Long, 答案溢出了, 需要用Long防止进行平方的时候溢出.
代码:
class Solution {
public int mySqrt(int x) {
long low = 0, high = x;
while (low <= high) {
long mid = low + (high - low) / 2;
if (mid * mid > x) {
high = mid - 1;
} else if (mid * mid < x) {
low = mid + 1;
} else {
return (int) mid;
}
}
return (int) high;
}
}
京公网安备 11010502036488号