[LeetCode] 50. Pow(x, n)

【5分钟力扣】50. 用python3实现Pow(x,n)幂次运算 用5分钟时间学习一下python幂次运算,了解和掌握二分法优化时间复杂度 阅读详情

50. Pow(x, n) (数值的整数次方)



1. 题目翻译

求一个数值的整数次方,实现pow(x,n)功能。


2. 解题方法

使用二分法,通过下面公式

an={an2∗an2an−12∗an−12∗an为偶数n为奇数

可知当n为偶数时 an 就等于两个 an2 相乘,为奇数时只要在乘以a本身就可以,所以可以用递归求解。

有几个问题需要考虑:

  1. 当n为负值时,我们需要将得到的结果求倒数。
  2. 当n为负值时,如果x为0,无法求倒数,因为不能除以0。 注意:将x与0.0比较时,因为精度问题无法直接比较,需要将两者差的绝对值与0.00000001比较。
  3. 当n为-2147483648时,会越界。

3. 代码

//Runtime: 6ms
class Solution {
private:
    double Pow(double x, long long n) {
        if (n == 0)
            return 1.0;
        double result = myPow(x, n>>1);
        result *= result;

        if (n % 2)
            result *= x;

        return result;
    }
public:
    double myPow(double x, int n) {
        if ((x - 0.0>-0.00000001) && (x - 0.0 <0.00000001))
            return 0.0;
        if (n >= 0)
            return Pow(x, n);
        else {
            long long m = -n;
            if (n == -2147483648)
                m = 2147483648;
            return 1.0 / Pow(x, m);
        }

    }
};
【中等】力扣算法题解析LeetCode50:Pow(x,n) 本文介绍了快速幂算法(迭代法)实现pow(x, n)函数的解题思路和Java代码实现。核心步骤包括:处理负数指数、使用位运算进行快速幂计算。算法通过将指数分解为二进制形式,每次迭代将底数平方,仅当二进制位为1时才乘入结果,实现O(logn)的时间复杂度。代码使用long类型避免溢出,并通过位运算优化性能。 阅读详情

相关推荐

从病毒分析到安全研究:手把手教你用OD破解加壳程序的反调试机制

本文深入探讨了如何识别并绕过加壳程序的反调试机制,特别是针对使用IsDebuggerPresent等API检测的防护手段。通过实战案例和工具链配置,详细介绍了逆向工程中的关键技巧,包括内存补丁、硬件断点定位OEP等,帮助安全研究人员有效突破软件保护技术。

tgb345678的博客 823

力扣每日打卡 50. Pow(x, n) (中等)

这是刷算法题的第十一天,用到的语言是JS 题目:力扣 50. Pow(x, n) (中等)

2301_79369384的博客 2674

LaTeX参考文献格式apsrev4-1,增加文献标题

APS的LaTeX参考文献格式apsrev4-1是隐藏标题的,如果想要出现标题,需要更改apsrev4-1.bst文件内容 在apsrev4-1.bst文件靠后部分,定义不同类型文献格式的地方,将article类型的内容替换为, FUNCTION {article} { output.bibitem format.authors booktitle empty$ { "author" output.check }{ output } if$ author format.

loading1234567的博客 5031

Leetcode 50:Pow(x, n)(超详细的解法!!!)

layout: post title: Leetcode 50:Pow(x, n)(超详细的解法!!!) category : 算法 tags : [python, c, c++] stickie: true date: 2018-12-9 00:00:00 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示...

coordinate的博客 2906

IFIX数据库Datebase当前值问号

IFIX数据库Datebase当前值问号,已解决,亲测有效 在OPC PowerTool有数据的情况下,IFIX数据库Datebase当前值显示???? 问题分析及解决方法 我的IFIX5.8版本,其它版本可参考 打开IFIX工作台:应用程序–任务控制–I/O驱动–OPC Client;查看OPC驱动是否被禁用,点击启动,变成激活状态即可;若点击启动无法激活OPC驱动,需要重新安装OPC驱动,方法如下: 下载I/O Driver文件 下载链接:https://download.csdn.net/down

Ron_Tso的博客 2759

Springer期刊LaTeX模板中参考文献格式选择与编译错误的快速修复指南

本文针对Springer期刊LaTeX模板中参考文献编译后显示问号的常见问题,提供了快速修复指南。核心在于正确选择并配置与期刊匹配的参考文献格式文件(.bst),并执行标准的四步编译流程。文章详细解释了问题根源,并给出了从查找正确.bst文件到修改代码、执行编译的完整解决方案,帮助作者高效解决投稿中的技术障碍。

weixin_29266007的博客 401

Leetcode[二分查找] 50. Pow(x, n)

Leetcode[二分查找] 50. Pow(x, n)审题代码实现反思 审题 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 输出: 9.26100 示例 3: 输入: 2.00000, -2 输出: 0.25000 解释: 2^-2 = 1/2^2 = 1/4 = 0.25 说明: -100.0 < x < 100.0 n 是 32 位有符号整数,其数值范围

weixin_45415929的博客 1179

Windows游戏玩家必看:用Process Lasso优化CPU优先级和核心绑定,告别卡顿

本文为Windows游戏玩家详细介绍了如何使用Process Lasso优化系统性能。通过设置CPU优先级和核心绑定,可以智能管理进程资源,确保游戏获得最高调度权限,有效减少因后台程序干扰或Windows调度机制不完善导致的卡顿与帧数波动,从而提升游戏流畅度与稳定性。

weixin_29299807的博客 2215

LeetCode50-Pow(x, n)

LeetCode50-Pow(x, n) 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 输出: 9.26100 示例 3: 输入: 2.00000, -2 输出: 0.25000 解释: 2−2=122=14=0.252^{-2} = \frac {1}{2^{2...

lyd1995的博客 231

69、SAP数据库归档重做日志备份策略与工具详解

本文详细解析了SAP数据库归档重做日志备份的重要性及策略,介绍了SAP提供的备份工具brarchive及其配置和使用方法,探讨了BRBACKUP与BRARCHIVE的联合运行、一致在线备份、备用数据库备份场景以及备份策略的综合应用与优化。此外,还分析了备份过程中常见问题的解决方法、备份监控与评估流程、与第三方备份解决方案的集成方式,以及未来备份技术的发展趋势和应对策略。通过合理运用这些策略和工具,可以有效保障SAP数据库的安全性和可恢复性。

peace的博客 135

【FPGA教程案例87】加解密1——基于FPGA的AES加解密算法verilog实现

DES已走到了它生命的尽头。56比特密钥实在太小,虽然三重DES可以解决密钥长度的问题,但是DES的设计主要针对硬件实现,而今在许多领域,需要用软件方法来实现它,在这种情况下,它的效率相对较低。1997年4月15日美国国家标准和技术研究所(NIST)发起征集AES(Advanced Encryption Standard)算法的活动,并成立了AES工作组。目的是为了确定一个非保密的、公开披露的、全球免费使用的加密算法,用于保护下一世纪政府的敏感信息。这里,我们对AES的基本原理进行介绍:

FPGA/MATLAB学习教程/源码/项目合作开发 2545

LeetCode 力扣 50. Pow(x, n)

题目描述(中等难度) 就是求幂次方。 解法一 求幂次方,用最简单的想法,就是写一个 for 循环累乘。 至于求负幂次方,比如 $2^{-10}$,可以先求出 $2^{10}$,然后取倒数,$1/2^{10}$ ,就可以了。 double mul = 1; if (n > 0) { for (int i = 0; i < n; i ) { mul *= x; ...

wind_liang的博客 978

基于STC8A8K64S4A12的掉电唤醒定时器应用,极大降低产品功耗

通过合理的配置和编程,我们可以充分发挥单片机的功能,实现能效优化和电池寿命延长的目标。其中,掉电唤醒定时器是其一项重要功能,可以在系统处于睡眠状态时通过定时器的计时功能进行唤醒,从而实现对系统功耗的有效控制。使用STC8A8K64S4A12的掉电唤醒定时器功能,我们可以在不影响系统正常工作的情况下,大大降低产品的功耗。通过以上的代码,我们实现了一个简单的掉电唤醒定时器功能。当系统进入睡眠模式后,定时器开始计时,到达预设的唤醒时间后,定时器中断被触发,系统从睡眠模式唤醒,执行相应的操作。

CodeSageX的博客 1090

【LeetCode】50. Pow(x, n)

本文介绍了快速幂算法实现x的n次幂计算。通过分治和位运算将时间复杂度优化至O(logn),对比了递归、迭代、分治和位运算四种实现方式。重点分析了边界条件处理,包括负数指数、零指数等特殊情况,并提供了相应的代码优化策略。文章还总结了算法的应用场景和测试用例设计方法,强调了快速幂在数学计算、密码学等领域的实用价值。核心是通过二进制分解指数,利用幂运算性质实现高效计算。

qq_32019341的博客 1051

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

递归-50.Pow(x,n)-力扣(LeetCode)

个人主页:1白天的黑夜1-优快云博客专栏:力扣刷题录_1白天的黑夜1的博客-优快云博客、企鹅程序员:Linux 系统与网络编程_1白天的黑夜1的博客-优快云博客目录一、题目解析二、算法原理解法1:暴力循环->时间复杂度:超时解法2:快速幂->时间复杂度:O(log n)如何编写递归代码?1、重复子问题->函数头2、只关心某一个子问题做什么->函数体3、递归函数的出口细节问题1、观察题目条件可知n有正也有负2、n次方数的负数转正可能会溢出根据编写思路和细节问题,去编写尝试代码,提升自己的代码能力,题目链

black_bear_white的博客 1240

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【题解】【LeetCode】50. Pow(x, n)

原题传送:链接 50. Pow(x, n) 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000,102.00000, 102.00000,10 输出: 1024.000001024.000001024.00000 示例 2: 输入: 2.10000,32.10000, 32.10000,3 输出: 9.261009.261009.26100 示例 3: 输入: 2.00000,−22.00000, -22.00000,−2 输出: 0.250000.25

葑鈊丶 515

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

刷题记录(LeetCode 50 Pow(x,n))

思路:如果按照一般的递归模板去写,写成myPow(x)=myPow(x, n-1)*x,在本题中会导致栈溢出,因为计算次数太多。PS:力扣给的C++板子的n默认是int类型,结果测试数据里n的大小超出了int的最大量。改成long就行了。对于负数,使用1/myPow(x, -n)即可。,这样计算次数就可以从原本的n降低为。

YaoSolar的博客 212

leetcode力扣每日一题50. Pow(x, n)

题目描述 实现 pow(x, n) ,即计算 x 的 n 次幂函数 我们先来看一下比较容易理解的递归或循环 以下是递归的例子,是容易理解的,但是空间复杂度和时间复杂度上却很多 我们不难看出 时间复杂度为O(n); 空间复杂度为O(n); class Solution { public: double myPow(double x, int n) { if(x==1){ return x; } if(x==-1){

qq_45841146的博客 310

LeetCode 50. Pow(x, n)

目录LeetCode 50. Pow(x, n)题目描述解题 LeetCode 50. Pow(x, n) 题目描述 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 输出: 9.26100 示例 3: 输入: 2.00000, -2 输出: 0.25000 解释: 2-2 = 1/22 = 1/4 = 0.25 说明: -100.0 < x < 100.0

s_Shune 144

LeetCode 50. Pow(x,n)

LeetCode 50. Pow(x,n) 题目描述:实现pow(x,n)pow(x,n)pow(x,n),即计算x的n次幂函数。 样例 输入:2.00000, 10 输出:1024.00000 输入: 2.10000, 3 输出: 9.26100 输入: 2.00000, -2 输出: 0.25000 解题思路 快速幂,注意n为负数情况。 class Solution { public: double myPow(double x, int n) { typedef long

king_fdy的博客 289

LeetCode第50题思悟——Pow(x, n)(powx-n)

LeetCode第50题思悟——Pow(x, n)(powx-n) 知识点预告 对边界值的处理意识; 对整数溢出的处理; 折半的思想 题目要求 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/powx-n 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 示例...

博采众长,自成一派; 502

C++/python描述 LeetCode 50. Pow(x, n)

C++/python描述 LeetCode 50. Pow(x, n)   大家好,我叫亓官劼(qí guān jié ),在优快云中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在优快云中写博客,唯一博客更新的地址为:亓官劼的博客 ,同时正在尝试在B站中做一些内容分享,B站主页为: 亓官劼的B站主页 由于学习工作的需要,算法刷题将会逐渐由C++向Python3过度,正在过度中,如实现的不太优美,请见谅。 本文原创为亓官劼,请大家支持原创,部分平台一直在恶意盗取博主的文章!!!

一起加油 931

c/c++ 力扣 LeetCode 50.Pow(x,n)

题目链接 力扣 50.Pow(x,n) 不想戳的看下图 这里,我们给出4种解法。 解法一:直接返回函数值 return pow(x,n); //注:pow是计算以x为底的n次方值 解法二:暴力求解 代码如下: class Solution { public: double myPow(double x, int n) { double result = 1; if (n < 0) x = 1 / x, n = -n; for (int i =

镭射瓶的博客 343

Leetcode 中等:50. Pow(x,n)

我们先算出所有2的幂,然后在算出所有x的2的幂次方。再把n拆成二进制,把二进制当中对应位置是1的值乘起来,就得到了结果。,即计算 x 的 n 次幂函数。可以拆成二进制表示,例如当。时,5的二进制是0101,

老马的程序人生 478

Python Leetcode 50. Pow(x, n)

Python Leetcode 50. Pow(x, n) # 递归 class Solution(object): def myPow(self, x, n): """ :type x: float :type n: int :rtype: float """ def quickmul(N): if N ==0: return 1.0

GhostintheCode的博客 424

leetcode 50. Pow(x, n)

leetcode 50. Pow(x, n) 题目详情 题目链接 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 输出: 9.26100 示例 3: 输入: 2.00000, -2 输出: 0.25000 解释: 2-2 = 1/22 = 1/4 = 0.25 说明: -100.0 < x < 100.0 n 是 32 位有符号整数,其数值范围是 [−231,

qq_33789406的博客 152
上一篇: [LeetCode] 191. Number of 1 Bits
下一篇: [操作系统] 文件系统的实现(一)
LLLZHLIU
博客等级 码龄10年 19粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值