[LeetCode] Pow(x, n)
2015-03-04 14:41
381 查看
Implement pow(x, n).
思路:可以连乘,但会超时,所以使用二分法:
注意几点:
1 不要写成pow(x, n/2)* pow(x, n/2) 还是会超时,因为还是会计算两遍,直接使用临时变量tmp= pow(x, n/2),然会return tmp*tmp
2 注意int 有可能为负数
3 注意对于INT_MIN 的处理,他比INT_MAX 的绝对值大于1,直接判读小于0,return pow(x,-n)会越界,所以使用long long 保证其64位,不会越界
思路:可以连乘,但会超时,所以使用二分法:
注意几点:
1 不要写成pow(x, n/2)* pow(x, n/2) 还是会超时,因为还是会计算两遍,直接使用临时变量tmp= pow(x, n/2),然会return tmp*tmp
2 注意int 有可能为负数
3 注意对于INT_MIN 的处理,他比INT_MAX 的绝对值大于1,直接判读小于0,return pow(x,-n)会越界,所以使用long long 保证其64位,不会越界
class Solution { public: double pow(double x, int n) { long long ln = n; return powl(x, ln); } double powl(double x, long long n) { if(n < 0) return 1/powl(x, -n); if(n == 0) return 1; if(n == 1) return x; if( n & 0x1 == 1) { double tmp = powl(x, n/2); return tmp* tmp * x; } else { double tmp = powl(x, n/2); return tmp* tmp ; } } };
相关文章推荐
- [Leetcode]#50 Pow(x, n)
- Pow(x, n) -leetcode
- LeetCode 50 — Pow(x, n)(C++ Java Python)
- [Leetcode] Pow(x, n)
- [Leetcode]Pow(x, n)
- leetcode-Pow(x, n)
- Leetcode: Pow(x,n)
- LeetCode "Super Pow"
- leetcode第一刷_Pow(x, n)
- [leetcode] Pow(x, n)
- LeetCode: Super Pow
- LeetCode: pow
- [LeetCode]题解(python):050-Pow(x, n)
- Leetcode19: Pow(x,n)
- leetcode - Pow(x, n)
- LeetCode | Pow(x, n)
- 《leetCode》:Pow(x, n)
- [LeetCode]Pow(x, n)
- LeetCode——pow(x, n)
- leetcode 372. Super Pow