网站 空间 是什么,软件商店应用,创建快捷方式app下载,网站集约化建设规范69.x 的平方根#xff08;力扣LeetCode#xff09;
题目描述
给你一个非负整数 x #xff0c;计算并返回 x 的 算术平方根 。
由于返回类型是整数#xff0c;结果只保留 整数部分 #xff0c;小数部分将被 舍去 。
注意#xff1a;不允许使用任何内置指数函数和算符力扣LeetCode
题目描述
给你一个非负整数 x 计算并返回 x 的 算术平方根 。
由于返回类型是整数结果只保留 整数部分 小数部分将被 舍去 。
注意不允许使用任何内置指数函数和算符例如 pow(x, 0.5) 或者 x ** 0.5 。
示例 1 输入x 4 输出2 示例 2 输入x 8 输出2 解释8 的算术平方根是 2.82842…, 由于返回类型是整数小数部分将被舍去。 提示
0 x 231 - 1
浮点数二分
// 定义解决问题的类 Solution
class Solution {
public:// 计算并返回非负整数 x 的算术平方根的整数部分int mySqrt(int x) {// 由于要找的平方根不会超过 x 本身二分查找的起始范围设定为 [0,x]double l 0, r x;// 使用二分查找来逼近平方根的值。这里设置一个很小的阈值 1e-6// 表示当左右边界的差距小于这个阈值时停止搜索// 这是因为我们只需要得到整数部分while (r - l 1e-6) {// 计算中点值double mid (l r) / 2.0;// 如果 mid 的平方大于或等于 x我们知道平方根位于左半部分// 所以将右边界移动到 midif (mid * mid x) r mid;// 如果 mid 的平方小于 x我们知道平方根位于右半部分// 所以将左边界移动到 mid。这里不需要处理边界问题// 因为我们不是在寻找具体的元素而是逼近一个实数值else l mid;}// 最后返回右边界 r 作为结果由于题目要求只要整数部分// 变量 r 会自动转换为 int 类型并且舍去小数部分return r;}
};