- 题目
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
- 示例
示例 1: 输入:x = 4 输出:2 示例 2: 输入:x = 8 输出:2 解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
- 解题思路
- 方法一:二分查找。可以是用二分查找的思想,来查找x的平方根。
- x的平方根一定小于等于x / 2,减少查询范围。
- 左边界为1, 有边界为x / 2.
- 方法二:牛顿迭代法
- 方法一:二分查找。可以是用二分查找的思想,来查找x的平方根。
- 代码(Java)
// 方法一 class Solution { public int mySqrt(int x) { if (x == 1) { return 1; } long a = x; long left = 1; long right = a / 2; long mid = 0; while (left <= right) { mid = (left + right) / 2; if (mid * mid == a) { return (int) mid; } else if (mid * mid > a) { right = mid - 1; } else { left = mid + 1; } } return (int) right; } }
class Solution { public int mySqrt(int x) { if (x == 1) { return 1; } double i = 0; int k = 0; double m = x; while ((i * i) <= m) i += 0.1; for (int j = 0; j < 10; j++) { i = (m / i + i) / 2; } return (int) i; } }
LeetCode69 x的平方根
于 2024-03-10 14:06:24 首次发布