50.pow(x, n) python

题目

题目描述

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即, 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 / 2 2 = 1 / 4 = 0.25 2^{-2} = 1/2^2 = 1/4 = 0.25 22=1/22=1/4=0.25

提示:

-100.0 < x < 100.0
− 2 31 < = n < = 2 31 − 1 -2^{31} <= n <= 2^{31}-1 231<=n<=2311
n 是一个整数
要么 x 不为零,要么 n > 0 。
− 1 0 4 < = x n < = 1 0 4 -10^4 <= x^n <= 10^4 104<=xn<=104

题解

要实现pow(x, n)函数,即计算 x n x^n xn,可以使用快速幂算法。这个算法的核心思想是通过将指数不断减半来减少乘法运算的次数,从而大大提高了效率。快速幂算法适用于整数和浮点数,并且可以处理正指数和负指数的情况。

解题思路

  1. 处理特殊情况:如果 n = 0 n=0 n=0,那么任何数的0次幂都是1(除了0^0,在数学上有时认为是未定义的,但在此题目中我们可以返回1)。
  2. 处理负指数:如果 n < 0 n<0 n<0,则可以通过计算 x − n x^{-n} xn然后取其倒数得到结果。这是因为 x − n = 1 / x n x^{-n} = 1/x^n xn=1/xn
  3. 快速幂算法:对于正整数 n n n,使用迭代或递归的方法,将 n n n减半的同时平方底数 x x x。如果 n n n为奇数,则还需要额外乘一次 x x x

python

下面是Python代码实现:

def myPow(x: float, n: int) -> float:
    # 处理负指数
    if n < 0:
        x = 1 / x
        n = -n
    
    result = 1
    while n:
        # 如果n是奇数,就乘以当前的x
        if n % 2:
            result *= x
        # 将x平方,准备下一轮的计算
        x *= x
        # n除以2,向下取整
        n //= 2
    
    return result

代码解释

这段代码实现了快速幂算法,它能够有效地计算 x n x^n xn,其中 n n n可以是任意整数(包括负数)。该算法的时间复杂度为O(log n),因为每次循环 n n n都会被减半;空间复杂度为O(1),因为我们只用了常数级别的额外空间来存储结果和其他变量。

此方法能很好地满足题目给出的所有条件和限制,包括处理大范围内的 n n n值以及确保输出在规定的范围内。

提交结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gxls2024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值