Sqrt(x) -- leetcode
2015-04-08 14:28
330 查看
Implement
Compute and return the square root of x.
此代码在leetcode上实际执行时间为16ms。
基本思路为二分法。
由于二段式二分法,退出循环时,有两种情况,一是精确匹配,二是精确值不存在情况下,指向稍大一点的。故函数返回时需要判断一下。
另外一点需要注意的是,作判断时,不能用 mid * mid < x, 而是要写成 mid < x / mid。 因为剩法会溢出,而除法不会溢出。
int sqrt(int x).
Compute and return the square root of x.
此代码在leetcode上实际执行时间为16ms。
基本思路为二分法。
由于二段式二分法,退出循环时,有两种情况,一是精确匹配,二是精确值不存在情况下,指向稍大一点的。故函数返回时需要判断一下。
另外一点需要注意的是,作判断时,不能用 mid * mid < x, 而是要写成 mid < x / mid。 因为剩法会溢出,而除法不会溢出。
class Solution { public: int sqrt(int x) { if (!x) return x; int l = 1, h = x; while (l < h) { const int mid = l + (h - l) / 2; if (mid < x / mid) l = mid + 1; else h = mid; } return l == x / l ? l : l - 1; } };
相关文章推荐
- LeetCode之Sqrt(x)
- 4.26 leetcode -26 sqrtx
- LeetCode || Sqrt(x)
- leetcode 069 Sqrt(x)
- leetcode69---Sqrt(x)(求x的平方根)
- leetcode-69. Sqrt(x)
- Leetcode 69. Sqrt(x) 解题报告【C库函数sqrt(x)模拟-求平方根】
- LeetCode | Sqrt(x)
- LeetCode 69. Sqrt(x) 解题报告
- [Leetcode]69.Sqrt(x)
- 【leetcode】Sqrt(x)
- LeetCode 69 - Sqrt(x)
- leetcode解题方案--069--sqrt(x)
- LeetCode 69. Sqrt(x)
- [LeetCode] Sqrt(x)
- Leetcode 69. Sqrt(x)
- leetCode 69.Sqrt(x) (平方根) 解题思路和方法
- LeetCode-Sqrt(x)
- [leetcode] 69. Sqrt(x) 解题报告
- leetcode: 69. Sqrt(x)