[Leetcode]sqrt(x)
2014-10-28 14:54
260 查看
牛顿迭代法:
Xi+1 = (Xi + n / Xi) / 2;
last代表Xi
res代表Xi+1
最终会收敛于last == res,得到的就是sqrt,具体原因wiki牛顿迭代法
二分法,
由于一个数的算术平方根不会大于n/2+1,所以可以在0刀n/2+1之中用二分法查找。代码如下:
Xi+1 = (Xi + n / Xi) / 2;
last代表Xi
res代表Xi+1
最终会收敛于last == res,得到的就是sqrt,具体原因wiki牛顿迭代法
public class Solution { public int sqrt(int x) { if (x == 0) return 0; double last = 0; //任意 double res = 1; //任意 while (last != res) { last = res; res = (res + x / res) / 2; } return (int)res; } }
二分法,
由于一个数的算术平方根不会大于n/2+1,所以可以在0刀n/2+1之中用二分法查找。代码如下:
public int sqrt(int x) { if(x<0) return -1; if(x==0) return 0; int l=1; int r=x/2+1; while(l<=r) { int m = (l+r)/2; if(m<=x/m && x/(m+1)<m+1) return m; if(x/m<m) { r = m-1; } else { l = m+1; } } return 0; }
相关文章推荐
- LeetCode - Sqrt(x)
- https://leetcode.com/problems/sqrtx/
- Sqrt(x) -- leetcode
- LeetCode刷题笔录Sqrt(x)
- 【LeetCode】69. Sqrt(x)
- leetcode_69题——Sqrt(x)(二分查找,还有个溢出问题的研究)
- [LeetCode] Sqrt(x) 求平方根
- Leetcode: sqrt
- leetcode——69——Sqrt(x)
- LeetCode - Sqrt(x)
- 【leetcode】sqrt(int x)
- 《leetCode》:Sqrt(x)----------hard
- LeetCode69 Sqrt(x)
- leetcode 69. Sqrt(x)
- LeetCode 69. Sqrt(x)(x的算术平方根)
- [Leetcode] 69. Sqrt(x) 解题报告
- Leetcode: Sqrt(x)
- leetcode - Sqrt(x)
- LeetCode - Sqrt(x)
- leetcode 69. Sqrt(x)