Leetcode的Pow(x, n) 与 sqrt(x)
来源:互联网 发布:linux ftp查看文件 编辑:程序博客网 时间:2024/03/29 21:47
Pow(x,n):
class Solution {public: double pow(double x, int n) { if(x == 0){ cout<<"NaN"<<endl; return -1; } if(n == 0){ return 1; } int sign = (x < 0 && (n & 1)) ? -1 : 1; x = abs(x); if(x == 1){ return sign; } bool inverse = n < 0 ? true : false; double origin_x = 1; if(n == INT_MIN){ n = INT_MAX; origin_x = x; }else{ n = abs(n); } double ans = 1; while(n){ if(n & 1){ ans *= x; } x *= x; n = n >> 1; } ans *= sign; return inverse ? 1 / (ans * origin_x) : ans * origin_x; }};
Sqrt(x):
class Solution {public: int sqrt(int x) { if (x <= 0) return 0; double last = 0; double res = 1; while (res != last) { last = res; res = (res + x / res) / 2; } return int(res); }};
上述采用了牛顿迭代法,以下摘自百度百科
这里我们设f(x)=x^2 - n,因此x1=x0-(x0^2-n)/2x0 = x0-x0/2+n/2X0=(x0+n/x0)/2
0 0
- Leetcode的Pow(x, n) 与 sqrt(x)
- [leetcode]Pow(x, n)&&Sqrt(x)
- 【leetcode 分治法】Pow(x, n)与Sqrt(x)函数的实现
- Leetcode 50. Pow(x, n) & 69. Sqrt(x)
- LeetCode.50(69) Pow(x,n)&&Sqrt(x)
- LeetCode: Pow(x, n)
- LeetCode Pow(x,n)
- [Leetcode] Pow(x, n)
- LeetCode: Pow(x, n)
- Leetcode: Pow(x,n)
- [LeetCode] Pow(x, n)
- [Leetcode] Pow(x,n)
- 【leetcode】Pow(x, n)
- [LeetCode]Pow(x, n)
- [leetcode]Pow(x, n)
- LeetCode-Pow(x, n)
- LeetCode - Pow(x, n)
- LeetCode | Pow(x, n)
- C/C++下修改字符串常量
- ElasticSearch路由哈希算法的实现
- 星际穿越与计算机程序的多维空间
- 列出叶节点(PAT3-2)
- 胡歌已发放姑姑也以鼓励了
- Leetcode的Pow(x, n) 与 sqrt(x)
- 后缀数组模板解析
- <a href="http://www.pianopro.cn">通州钢琴培训</a>
- linux静态库与动态库制作
- HashMap的存储结构及原理
- substring
- 浅谈我对IO流的了解 - 字符流
- 计算机顶级会议Rankings && 英文投稿的一点经验
- Click Notes I - Overview