欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【算法题】剑指offer数值的整数次方--python实现

程序员文章站 2024-03-18 09:41:52
...

数值的整数次方

【算法题】剑指offer数值的整数次方--python实现
快速幂法:
快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N)
【算法题】剑指offer数值的整数次方--python实现

# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exponent):
        # write code here
        """
        法一:快速幂法
        """
        #用来记录exponent的正负
        flag = False
        if base == 0:
            if exponent > 0:
                return 0
            elif exponent < 0:
                return None
        else:
            if exponent == 0:
                return 1
            else:
                if exponent < 0:
                    flag = True
                    exponent = -exponent
                result = base
                #右移一位
                exponent >>= 1
                while exponent:
                    base *= base
                    #判断最右边的一位是否为1
                    if (exponent & 1) == 1:
                        result *= base
                    exponent >>= 1
                if flag:
                    return 1/result
                else:
                    return result
        """
        法二
        return base**exponent
        """