首页 > 代码库 > LeetCode50 Pow(x, n)

LeetCode50 Pow(x, n)

题目:

Implement pow(xn). (Medium)

分析:

实现库函数求幂运算,遍历一遍是超时的,用快速幂,就是分治的思想,每次把n去掉一半。

注意:n的取值范围,n = MIN_INT时,-n会超范围,这里WA了一次。

代码:

 1 class Solution { 2 private: 3     double helper(double x, long long n) { 4         if (n == 0) { 5             return 1; 6         } 7         double result = 1; 8         double p1 = myPow(x, n / 2); 9         if (n % 2 == 0) {10             return p1 * p1;                11         }12         else {13             return p1 * p1 * x;14         }15     }16 public:17     double myPow(double x, int n) {18         long long nl = n;19         if (n > 0) {20             return helper(x, n);21         }22         else {23             return 1.0 / helper(x, -nl);24         }25     }26 };

 

LeetCode50 Pow(x, n)