剑指 Offer 16. 数值的整数次方
程序员文章站
2022-03-16 11:13:03
...
解题思路:
1.如果n==0,直接返回1;
2.如果n大于0,计算x的n次方,
3.如果n小于0,则将n取绝对值,x变为倒数,计算(1/x)的n次方
注意:
n的取值范围为[-2^31, 2^31-1];
如果n为-2^31,而其绝对值为2^31不在int型范围内,所以首先需要将n转化为long型;
class Solution {
public double myPow(double x, int n) {
double res=1.0;
if(x==0){
return 0;
}
long b=n;
if(b>0){
for(;b!=0;b>>=1){
if((b&1)==1){
res=res*x;
}
x=x*x;
}
return res;
}
if(b<0){
x=(1/x);
b=Math.abs(b);
for(;b!=0;b>>=1){
if((b&1)==1){
res=res*x;
}
x=x*x;
}
return res;
}
return res;
}
}
下一篇: 剑指 Offer 16. 数值的整数次方
推荐阅读
-
剑指offer31:整数中1出现的次数(从1到n整数中1出现的次数)
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
剑指offer JZ31 整数中1出现的次数 Python 解
-
剑指Offer16_数值的整数次方(快速幂及拓展)
-
【剑指offer】_11整数中1出现的次数
-
【剑指offer】_08.数值的整数次方
-
剑指offer两个面试案例 把字符串转换成整数 树中两个节点的最低公共祖先
-
【LeeCode 中等 数学 python3】剑指 Offer 43. 1~n整数中1出现的次数
-
剑指offer JZ53 表示数值的字符串 Python 多解
-
剑指offer 从1到n整数中1出现的次数