leetcode 69 - Sqrt(x)
2016-11-27 12:27
411 查看
leetcode题目汇集 — Sqrt(x)
leetcode 69 - Sqrt(x)
题目要求:
Implement int sqrt(int x).
Compute and return the square root of x.
注意:程序中需要进行乘法计算,为避免数值逸出,中间数值应设置为long
解法1:从1开始遍历,直到root的平方大于x,此时返回结果。时间复杂度为o(n)
public class Solution { public int mySqrt(int x) { if (x < 0) { return -1; } if (x == 0) { return 0; } int root = 1; long result = root * root; while (result > 0 && result <= x) { root++; result = root * root; } return root - 1; } }
解法2:二分法,时间复杂度为o(log n)
public class Solution { public int mySqrt(int x) { if (x < 0) { return -1; } if (x == 0) { return 0; } long left = 1; long right = x; while (left + 1 < right) { long mid = left + (right - left) / 2; if (mid * mid == x) { return (int)mid; } if (mid * mid < x) { left = mid; } else { right = mid; } } if (right * right <= x) { return (int)right; } return (int)left; } }
相关文章推荐
- leetcode 69 Sqrt(x)
- Leetcode 69. Sqrt(x)
- 个人记录-LeetCode 69. Sqrt(x)
- Leetcode 69. Sqrt(x)
- LeetCode 第 69 题 (Sqrt(x))
- LeetCode【69】 Sqrt(x)
- leetcode 69. Sqrt(x)
- Leetcode-69: Sqrt(x)
- Leetcode 69. Sqrt(x) (Easy)
- [leetcode:python]69.Sqrt(x)
- leetcode-69. Sqrt(x)
- LeetCode 69. Sqrt(x)
- LeetCode 69: Sqrt(x)
- 【LeetCode】(69)Sqrt(x)(Medium)
- [Leetcode]#69 Sqrt(x)
- The Solution to LeetCode 69 Sqrt(x)
- 【leetcode】【69】Sqrt(x)
- LeetCode 69 Sqrt(x)(Math、Binary Search)(*)
- LeetCode-69-Sqrt(x) Python要用math.sqrt()
- LeetCode *** 69. Sqrt(x) 牛顿迭代法