题目来源:
力扣
https://leetcode.cn/problems/sqrtx/题目简介:
给你一个值,要求返回值为这个数的算数平方根
思路:简单的如果给个4,它的算数平方根是2,但如果给个8 ,那么算出来结果就是2.8……题目要求保留整数部分,这其实又是可以把题目转化为二分查找的类型的题,就是往大了查,发现太大了,就往小了查,小于目标值的就有可能是这个数
代码实现:
public class Solution {
public int mySqrt(int x) {
if (x == 0) {
return 0;
}
if (x == 1) {
return 1;
}
int left = 1;
int right = x / 2;
// 在区间 [left..right] 查找目标元素
while (left < right) {
int mid = left + (right - left + 1) / 2;
if (mid > x / mid) {
// 下一轮搜索区间是 [left..mid - 1]
right = mid - 1;
} else {
// 下一轮搜索区间是 [mid..right]
left = mid;
}
}
return left;
}
}