1.题目描述
Implement pow(x, n).
2.解题 思路
这道题目一看感觉诶,还很容易诶,为什么是Medium呢?
然后很快的顺手写了一个上去,分n为0,正负数讨论。
显然,没有AC。
样例错的是,溢出了23333
然后就判断一下溢出嗯~就可以了
3.实现代码
class Solution {
public:
double myPow(double x, int n) {
if (n == 0)
return 1.0;
else {
if (n < 0)
{
//判断是否溢出
if (n == INT_MIN)
return 1.0 / (pow(x, INT_MAX)*x);
else
return 1.0 / pow(x, -n);
}else{
if (n % 2 == 0)
{
double temp = myPow(x, n >> 1);
return temp * temp;
}
else{
double temp = myPow(x, (n - 1) >> 1);
return temp * temp * x;
}
}//else
}//else
}
};