题目描述
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。
示例 1:
输入:x = 2.00000, n = 10 输出:1024.00000 示例 2:
输入:x = 2.10000, n = 3 输出:9.26100 示例 3:
输入:x = 2.00000, n = -2 输出:0.25000 解释:2-2 = 1/22 = 1/4 = 0.25
提示:
-100.0 < x < 100.0 -231 <= n <= 231-1 -104 <= xn <= 104
来源:力扣(LeetCode) 链接: 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路分析
通过指数折半进行优化循环计算次数,注意边界问题
AC 代码
double myPow(double x, int n){
long long _n = n;
if (_n < 0) {
x = 1 / x;
_n = -_n;
}
if (x == 0) {
return 0;
}
if (x == 1) {
return 1;
}
if (x == -1) {
if ((_n & 1) == 1) {
return -1;
} else {
return 1;
}
}
double res = 1;
double temp = 1;
if (_n == 1) {
res = x;
}
while (_n > 1) {
res = x * x;
if ((_n & 1) == 1) {
temp *= x;
}
x = res;
_n /= 2;
}
return res * temp;
}
总结
注意边界问题即可
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情