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 };

 

posted @ 2016-09-07 21:27  wangxiaobao1114  阅读(205)  评论(0编辑  收藏  举报