问题描述:实现 int sqrt(int x) 函数,今天小编就来聊一聊关于leetcode统计数字问题?接下来我们就一起去研究一下吧!

leetcode统计数字问题(LeetCode算法第69题x的平方根)

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; }

,