剑指 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. 数值的整数次方的主要内容,如果未能解决你的问题,请参考以下文章

附可运行代码剑指 Offer 16. 数值的整数次方

数值的整数次方(剑指offer_16)

剑指Offer面试题16. 数值的整数次方

剑指Offer面试题16. 数值的整数次方

剑指Offer打卡16. 数值的整数次方

剑指Offer打卡16. 数值的整数次方