leetcode Pow(x,n)

来源:互联网 发布:网络销售怎么聊客户 编辑:程序博客网 时间:2024/05/18 20:09

此题需要注意的是n取正数,负数,零的情况,且其的奇偶也需要考虑,

采用常规算法超时,采用递归求解子问题,将一个数的n次幂转换成该数n/2次幂的乘积,因为是对n进行二分,复杂度为O(lgn)


class Solution {public:    double pow(double x, int n) {        if(n==0)            return 1;        if(n==1)            return x;        double temp = pow(x, abs(n/2));        if(n>0)        {            if(n&1)                return temp*temp*x;            else                return temp*temp;        }        else        {            if(n&1)                return 1.0/(temp*temp*x);            else                return 1.0/(temp*temp);        }    }};

0 0
原创粉丝点击