剑指 Offer 16. 数值的整数次方
Posted Rainbowman 0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer 16. 数值的整数次方相关的知识,希望对你有一定的参考价值。
使用快速幂的方法求幂,将幂n换位2进制去求解。
如果用暴力求解的话是O(n),因为是一个x一个x乘的(一次跳一步),而转换成二进制会使每次跳的步数越来越大。时间复杂度优化为O(logn)
class Solution {
public:
double myPow(double x, int n) {
// 用二进制的思路更好理解
long ln = n;
if(ln<0){
ln = -ln;
x = 1 / x;
}
double res = 1;
while(ln){
if(ln%2==1) res *= x;
x *= x;
ln /= 2;
}
return res;
}
};
以上是关于剑指 Offer 16. 数值的整数次方的主要内容,如果未能解决你的问题,请参考以下文章