LeetCode 剑指 Offer II 072. 求平方根
题目描述
给定一个非负整数 x ,计算并返回 x 的平方根,即实现 int sqrt(int x) 函数。
正数的平方根有两个,只输出其中的正数平方根。如果平方根不是整数,输出只保留整数的部分,小数部分将被舍去。
示例 1:
输入: x = 4
输出: 2
LeetCode 剑指 Offer II 072. 求平方根
提示:
0 <= x <= 231 - 1
一、解题关键词
二、解题报告
1.思路分析
2.时间复杂度
3.代码示例
class Solution {
public int mySqrt(int x) {
if(x == 0){
return 0;
}
int ans = (int) Math.exp(0.5 * Math.log(x));
return (long) (ans + 1) * (ans + 1) <= x ? ans + 1 : ans;
}
}
方法二
class Solution {
public int mySqrt(int x) {
int low = 0,high = x;
int ans = -1;
while(low <= high){
int mid = (high - low) / 2 + low;
if((long) mid * mid <= x){
ans = mid;
low = mid + 1;
}else{
high = mid - 1;
}
}
return ans;
}
}
2.知识点