Leetcode 69. Sqrt(x) (Easy)
2018-01-30 15:07
459 查看
1.题目
Implementint sqrt(int x).
Compute and return the square root of x.
x is guaranteed to be a non-negative integer.
Example 1:
Input: 4 Output: 2
Example 2:
Input: 8 Output: 2 Explanation: The square root of 8 is 2.82842..., and since we want to return an integer, the decimal part will be truncated.
2.思路
错误思路:for循环i,如果i*i>x,返回i-1.这样运行到第8个case就会报错,因为发生了溢出。修改思路:x开根号之后的值小于x/2+1,(x/2+1)2=x4/4+x+1>x。在此基础上,采用二分搜索进行查找。使用x/mid与mid比较,代替mid*mid与x比较,可以避免使用long型。
3.算法
class Solution { public int mySqrt(int x) { int low=1; int high=x/2+1; int mid=0;; while(low<=high){ mid= high - (high - low)/2; if(mid<x/mid) low=mid+1; else if(mid>x/mid) high=mid-1; else return mid; } return high; } }
相关文章推荐
- LeetCode 69. Sqrt(x)
- leetcode_69题——Sqrt(x)(二分查找,还有个溢出问题的研究)
- (Java)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)
- LeetCode69 Sqrt(x)
- LeetCode(69) Sqrt(x)
- LeetCode 69. Sqrt(x) 解题报告
- LeetCode | 69. Sqrt(x)
- Easy 16 Sqrt(x)(69)
- LeetCode_69---Sqrt(x)
- LeetCode 第 69 题 (Sqrt(x))
- LeetCode 69. Sqrt(x)
- LeetCode||69. Sqrt(x)
- LeetCode 69. Sqrt(x)
- Leetcode 69. Sqrt(x) 开根号 解题报告