当前位置:网站首页>leetcode 16. 数值的整数次方(快速幂+递归/迭代)
leetcode 16. 数值的整数次方(快速幂+递归/迭代)
2022-08-03 20:06:00 【会编程的露娜】
实现 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
提示:
-100.0 < x < 100.0
-231 <= n <= 231-1
-104 <= xn <= 104
思路:
快速幂+递归
class Solution {
public:
double myQuick(double x,long long k){
if(k==0)
return 1.0;
double y=myQuick(x,k/2);
return k%2==0 ? y*y : y*y*x;
}
double myPow(double x, int n) {
long long N=n;
return N>0 ? myQuick(x,N) : 1.0/myQuick(x,-N);
}
};
快速幂+迭代:
class Solution {
public:
double myPow(double x, int n) {
if(n==0)
return 1.0;
if(x==0)
return 0;
double ans=1.0;
long long b=n; //因为int是正数时补码为本身,如果是负数补码,改变符号之后需要加1,如果传进来的是(-2)的32次方,去反之后就会超出int,所以要用long long来扩大类型
if(n<0){
x=1/x; //这里是直接先取倒数,再计算倒数的n次方
b=-b;
}
while(b>0){
if(b&1==1) //如果b最后一位为1,就乘在最后的结果中,是0的话不用算到结果里
ans*=x;
x*=x;
b>>=1; //右移运算符可以看做删除最后一位,把低位最后一个移除,高位正数补0,负数补1
}
return ans;
}
};
左移和右移运算具体内容可以看:左移和右移的算法
边栏推荐
- 「学习笔记」高斯消元
- 力扣206-反转链表——链表
- 简易电子琴设计(c语言)
- Detailed demonstration pytorch framework implementations old photo repair (GPU)
- 盘点在线帮助中心对企业能够起到的作用
- 机器学习中专业术语的个人理解与总结(纯小白)
- matplotlib画polygon, circle
- Kubernetes资源编排系列之三: Kustomize篇 作者 艄公(杨京华) 雪尧(郭耀星)
- LeetCode 1374. 生成每种字符都是奇数个的字符串
- Internet Download Manager简介及下载安装包,IDM序列号注册问题解决方法
猜你喜欢
MySQL Basics
xss.haozi练习通关详解
若依集成easyexcel实现excel表格增强
力扣206-反转链表——链表
力扣707-设计链表——链表
虚拟机vmware设置桥接模式上网
Alexa染料标记RNA核糖核酸|RNA-Alexa 514|RNA-Alexa 488|RNA-Alexa 430
Matlab paper illustration drawing template No. 42 - bubble matrix diagram (correlation coefficient matrix diagram)
怎么将自己新文章自动推送给自己的粉丝(巨简单,学不会来打我)
深入理解JVM-内存结构
随机推荐
一种能有效缓解环境噪声对音频质量干扰的方案
Edge box + time series database, technology selection behind Midea's digital platform iBuilding
ARMuseum
【飞控开发高级教程3】疯壳·开源编队无人机-定高、定点、悬停
子树的大小
MySQL Basics
Matlab paper illustration drawing template No. 42 - bubble matrix diagram (correlation coefficient matrix diagram)
力扣206-反转链表——链表
leetcode 1837. K 进制表示下的各位数字总和
虚拟机vmware设置桥接模式上网
高性能计算软件与开源生态| ChinaOSC
揭秘5名运维如何轻松管理数亿级流量系统
花 30 美金请 AI 画家弄了个 logo,网友:画得非常好,下次别画了!
ES6解构赋值--数组解构及对象解构
李沐动手学深度学习V2-BERT微调和代码实现
不知道这4种缓存模式,敢说懂缓存吗?
宁德时代2号人物黄世霖辞任副董事长:身价1370亿
收藏-即时通讯(IM)开源项目OpenIM-功能手册
谁的孙子最多II
微导纳米IPO过会:年营收4.28亿 君联与高瓴是股东