static int x=[](){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return 0;
}();
// 普通解法,超时
// class Solution {
// public:
// double myPow(double x, int n) {
// if (x == 0)
// return 0;
// if (n == 0)
// return 1;
// double res = x;
// double r = n;
// for (int i = 1; i < fabs(r); i++)
// res *= x;
// if (n < 0)
// res = 1 / res;
// return res;
// }
// };
//O(log(n))
class Solution {
public:
double myPow(double x, int n) {
if (n == 0)
return 1;
if (n > 0)
return solve(x, n);
else
return 1.0 / solve(x, -n);
}
// 二分法求解
double solve(double x, int n){
if (n == 0)
return 1.0;
double res = solve(x, n / 2);
if (n % 2 == 0)
return res * res;
else
return res * res * x;
}
};
LetCode 50. Pow(x, n)
猜你喜欢
转载自blog.csdn.net/wbb1997/article/details/80988470
今日推荐
周排行