leetcode-50-Pow(x, n)
来源:互联网 发布:淘宝店铺布局图片多大 编辑:程序博客网 时间:2024/05/20 04:12
问题
题目:[leetcode-50]
思路
这个题目比我在牛客刷的要更好。
主要是多了一种情形是对于,INT_MIN的考虑。
如果把它转化为整数次方是0。
因为他的二进制形式是:[10000000000000000000000000000000]
所以,要增加对它的处理。
代码
class Solution {public: double myPow(double x, int n) { if( equal(x, 0.0) ){ if(n>0) return 0.0; else if(!n) return 1.0; else return -1.0; } else{ if(!n) return 1.0; else if(1==n) return x; else{ double res = 0.0; if(n>0){ double half = myPow(x, n/2); res = half * half; if(n%2) res *= x; } else{ unsigned int e = 0; if(n == INT_MIN){ e = (unsigned)(INT_MAX) + 1; } else e = -n; double half = myPow(x, e/2); res = half*half; if(e%2) res *= x; res = 1.0/res; } return res; } } }private: bool equal(double a, double b){ const static double eps = 1e-8; return fabs(a-b) < eps; }};
思路1
代码1
class Solution {public: double myPow(double x, int n) { if( is_zero(x) ){ return (!n)?1.0:0.0; } else{ if(!n) return 1.0; int b = abs(n); double res = 1; double w = x; while(b){ if(b%2) res *= w; b/=2; w *= w; } return (n>0)?res:1.0/res; } }private: bool is_zero(double val){ const static double eps = 1e-8; return fabs( val - 0.0 ) < eps; }};
0 0
- leetcode 50 : Pow(x, n)
- LeetCode 50: Pow(x, n)
- [leetcode 50] Pow(x, n)
- [Leetcode] 50 - Pow(x, n)
- [LeetCode 50]Pow(x, n)
- leetcode 50 Pow(x, n)
- leetcode || 50、Pow(x, n)
- [leetcode] #50 Pow(x,n)
- LeetCode-50 Pow(x, n)
- Pow(x, n) - LeetCode 50
- Leetcode(50):Pow(x, n)
- LeetCode---(50)Pow(x, n)
- Leetcode #50 Pow(x, n)
- LeetCode(50) Pow(x, n)
- leetcode 50: Pow(x, n)
- Leetcode#50||Pow (x, n)
- [Leetcode]#50 Pow(x, n)
- leetcode 50:Pow(x, n)
- Maven插件--多代码目录插件
- 什么是VLAN
- Redis常用命令-String
- python2x与3x下urlretrieve的使用
- HBase java 增删改查操作
- leetcode-50-Pow(x, n)
- java反射方法的使用代码
- 视觉跟踪近年来的进展(2010年以前)——Advances in Visual Tracking
- 最适合程序员转行的10大职业
- poj3253 Fence Repair
- 在linux中搭建自己服务器的vpn脚本
- ZigBee_校正函数
- memcache redis 简单命令
- Java面试系列