【20】数值的整数次方
2021/7/28 23:05:56
本文主要是介绍【20】数值的整数次方,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
实现 pow(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/22 = 1/4 = 0.25
我的思路:如果n 为负数,则求 1/x的n次方,如果n为整数,则求x的n次方。
但是最后几个测试用例过不了,求大佬优化!!!
大佬思路: 快速幂
引用K神讲解
class Solution { public double myPow(double x, int n) { if(x == 0) return 0;//等于0就直接返回 long b = n;//用long型存储n,防止n为-2^31时,-n会越界 double res = 1.0;//将res初始值设为1,避免n为奇数数,多出一项,可以将1当做x^0,且当x=0时,可以直接返回res; //如果 n为负数,则要把负数转变为正数计算 if( b < 0){ x = 1 / x; b = -b ; } while( b > 0){ if((b & 1) == 1) res *= x; //如果b的二进制某位为1,说明需要把这个项乘起来,比如:11的二进制为1011, x *= x;// x是每一轮循环都需要乘的。 b = b >> 1; //求 b 的下一位二进制数,知道 b = 0。 } return res; } }
这篇关于【20】数值的整数次方的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20RabbitMQ教程:新手入门指南
- 2024-11-20Redis教程:新手入门指南
- 2024-11-20SaToken教程:新手入门指南
- 2024-11-20SpringBoot教程:从入门到实践
- 2024-11-20Java全栈教程:从入门到实战
- 2024-11-20Java微服务系统教程:入门与实践指南
- 2024-11-20Less教程:初学者快速上手指南
- 2024-11-20MyBatis教程:新手快速入门指南
- 2024-11-20QLExpress教程:初学者快速入门指南
- 2024-11-20订单系统教程:从入门到实践的全面指南