leetcode Pow(x,n)

来源:互联网 发布:普通话考试难不难知乎 编辑:程序博客网 时间:2024/06/13 22:52

题目:https://oj.leetcode.com/problems/powx-n/

题意:实现次方运算

思路:1:注意INT_MIN这个情况,当n取整数最小值时,他的相反数是INT_MAX*x

2,:参考别人用二分法求解,时间复杂度变为logn

3:百思不得其解,当下面的程序不用double v去取代pow的结果时,就会报错


代码:

class Solution {public:    double pow(double x, int n)    {    if(n==0)    return 1.0;    if(n<0){    if(n == INT_MIN)        return 1.0 / (pow(x,INT_MAX)*x);    else return 1.0/pow(x,-n);    }        double v = pow(x,n/2) ;        if (n % 2 == 0)            return v * v;        else            return v*v* x;    }};

还有我一直不知道我怎么错了的代码:

class Solution {public:    double pow(double x, int n)    {    if(n==0)    return 1.0;    if(n<0){    if(n == INT_MIN)        return 1.0 / (pow(x,INT_MAX)*x);    else return 1.0/pow(x,-n);    }    double v = pow(x,n-1);    return x*v;    }};


0 0
原创粉丝点击