问题描述:实现 int sqrt(int x) 函数,今天小编就来聊一聊关于leetcode统计数字问题?接下来我们就一起去研究一下吧!
leetcode统计数字问题
问题描述:
实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4 输出: 2
示例 2:
输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
思路:
因为结果只保留整数的部分,当 x > 4 时,x 的平方根 < x / 2, 当 x < =4 时,x 的平方根 < x / 2 1。因此使用二分法,在 0 与 x / 2 1 之间查找一个数值使得它的平方最接近x。
java代码:
public int mySqrt(int x) { long left = 0; long right = x / 2 1; while(left < right){ long mid = (left right 1) >>> 1; long square = mid * mid; if (square > x) { right = mid - 1; } else { left = mid; } } return (int)left; }
,