leetcode power (x,n)

来源:互联网 发布:软件测试工具qtp 编辑:程序博客网 时间:2024/05/19 10:36

1. 考虑double float 的相等,不能仅仅用==表示,是有精度限制的。

2.  n 大于0,小于0的情况

3. 

if (temp_diveded & 1)                result *= base;            base *= base;            temp_diveded >>= 1;

想法很赞!!!!


#define ACCURACY 0.0000001class Solution {public:    double pow(double x, int n) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if (n == 0)            return 1.0;        if (n==1)            return x;        if (equal(x, 1.0))            return x;        if (equal(x,-1.0)){            if (n%2 == 0 )                return abs(x);            else                 return -abs(x);        }                if (n < 0)            return 1.0/pow(x, -n);                 double result = 1;        double base = x;        int temp_diveded = n;        while (temp_diveded){            if (temp_diveded & 1)                result *= base;            base *= base;            temp_diveded >>= 1;        }        return result;            }        bool equal(double x, double y){        return abs(x-y) <= ACCURACY;    }};



原创粉丝点击