Implement pow(x, n)
最初的想法,时间复杂度O(n)
class Solution {
public:
double pow(double x, int n) {
double sum = 1.0;
if(x == 0)
{
return 0;
}
else
{
if(n == 0)
{
return 1;
}
else if(n < 0)
{
n = -n;
x = 1.0/x;
}
for(int i = 0; i < n; i++)
{
sum *= x;
}
}
return sum;
}
};
参考:
http://discuss.leetcode.com/questions/228/powx-n
时间复杂度O(logn)
class Solution {
public:
double pow(double x, int n) {
if(n == 0)
{
return 1.0;
}
double half = pow(x,n/2);
if(n % 2 == 0)
{
return half * half;
}
else if(n > 0)
{
return half * half * x;
}
else if(n < 0)
{
return half * half / x;
}
}
};