class 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;
if (n == 1) return x;
bool div = false;
bool neg = false;
if (n < 0) {
div = true;
n = -n;
}
if (x < 0) {
neg = n % 2;
x = -x;
}
double p = pow(x, n / 2);
double ret = n % 2 ? p * p * x : p * p;
if (div) ret = 1 / ret;
if (neg) ret = -ret;
return ret;
}
};
Small Case: 16ms
Large Case: 28ms
Time: O(lgn)
Space: O(1)