首页 > 其他分享 >50. Pow(x, n)

50. Pow(x, n)

时间:2023-01-06 11:22:21浏览次数:27  
标签:res 结果 Pow 50 dfs 相乘 child return

问题链接

https://leetcode.cn/problems/powx-n/description/

解题思路

这个题目具有缩小规模的潜质,所以可以用递归来进行解决。

为啥呢?因为幂本质上就是乘法。 2的3次幂,就是2*2*2。所以,我们要做的就是减少乘法的次数。

比如2的10次幂,它其实等于2的5次幂相乘。

2的5次幂,相当于2的2次幂相乘,再乘以一个底数。

2的2次幂,就等于2和2相乘。

2的1次幂,就相当于2和2的0次幂相乘。

这么算起来的话,我们把2的10次幂,10次乘法,缩减到了4次。没想到吧递归竟然有效率高的时候。

等等,那幂为负数咋办?好办,根据数学公式, 2的-2次幂,等于1除以(2的2次幂)。

 

既然幂有正负之分,那我们就不用题目给出的函数了,可以另外设置一个dfs。这样的话避免了在递归函数中进行正负号的处理,返回值自然就是幂运算的结果。

然后我们设计本层需要做什么。首先我们计算下一层的幂结果,这很重要,这相当于我们有了一个缓存,而不需要计算两次。

如果n为偶数,那下一层的幂结果的平方肯定为n。如果n为奇数,那下一层的幂的结果的平方肯定是n-1。 那我们怎么拼接本层结果呢?

本层结果,如果n是偶数的话,直接将下一层幂的结果相乘即可。

如果n是奇数的话,将下一层幂的结果相乘,还要乘以一个底数x,这样才可以。

最后,我们设计递归的出口。 n不断的除以2,总有到0的时候。任何数的0次幂都是0,所以直接返回1即可。

 

代码

class Solution:
    def myPow(self, x: float, n: int) -> float:
        def dfs(N):
            if N == 0:
                return 1
            child_res = dfs(N//2)
            return child_res*child_res if N%2 == 0 else child_res*child_res*x
        return dfs(n) if n>0 else 1/dfs(-n)

 

标签:res,结果,Pow,50,dfs,相乘,child,return
From: https://www.cnblogs.com/bjfu-vth/p/17029915.html

相关文章

  • DC-DC直流隔离线性可调电源模块高压稳压输出0-80V/150V/220V/300V/400V/800V/1000V
    特点 效率高达75%以上 1*2英寸标准封装 单电压输出 可直接焊在PCB上 工作温度:-40℃~+75℃ 阻燃封装,满足UL94-V0要求 温度特性好 电压控制输出,输出电压随控制电......
  • upload.html:143 GET http://localhost:8080/user_image/85F250A6-E07D-4FCB-8092-D4A
    publicclassLoginInterceptorConfigureimplementsWebMvcConfigurer{@OverridepublicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){......
  • NC50390 布局 Layout
    题目链接题目题目描述FJ有N头奶牛\((2\leqN\leq1000)\),编号为\(1\ldotsN\)。奶牛们将按照编号顺序排成一列队伍(可能有多头奶牛在同一位置上)。换句话说,假设i号......
  • 米尔国产T507-H开发板之Android SDK说明
        安卓系统作为目前世界上最受欢迎的移动操作系统,它可以在大量的设备上使用,它正在接管平板电脑、汽车、智能电视、可穿戴设备、家用电器、游戏机等市场,它为嵌入式平台......
  • git dash 密码输错了,一直报错500 怎么办
    使用gitBashHere绑定账号密码错误后无法自动重新绑定Abraham_Kevin于2018-08-1716:15:26发布1122收藏分类专栏:git文章标签:git版权git专栏收录该内容2篇文......
  • 一文教会你mock(Mockito和PowerMock双剑合璧)
    作者:京东物流杨建民1.什么是MockMock有模仿、伪造的含义。Mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。m......
  • PowerShell 备份与定期删除文件
    $d1=get-date-format"yyyyMMdd"New-Item-ItemTypeDirectory-Force-PathD:\kingdee\$d1New-PSDrive-Name"z"-PSProviderFileSystem-Root"\\172.16.200.11\d$\K......
  • 230104_50_RPC底层原理
    上述Stud中,有一个参数,writeInt(123),传的都是123这个具体的值,如果接口中暴露了其他的方法,其他方法需要出入的参数不同,就需要对此进行进一步优化。要实现,无论有多少个方法,都用......
  • NC14501 大吉大利,晚上吃鸡!
    题目链接题目题目描述最近《绝地求生:大逃杀》风靡全球,皮皮和毛毛也迷上了这款游戏,他们经常组队玩这款游戏。在游戏中,皮皮和毛毛最喜欢做的事情就是堵桥,每每有一个好时......
  • leetcode-350-easy
    IntersectionofTwoArraysIIGiventwointegerarraysnums1andnums2,returnanarrayoftheirintersection.Eachelementintheresultmustappearasmany......