不要自卑,去提升实力
互联网行业谁技术牛谁是爹
如果文章可以带给你能量,那是最好的事!请相信自己
加油o~
2021/6/1
今日题目(剑指Offer系列)
剑指 Offer 16. 数值的整数次方
实现 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
解题思路:
>本题目使用快速幂计算
>快速幂就是将底数进行平方,幂数进行减半
>不断执行该操作,最终底数的幂数会变成0
>其结果为1,但是中间幂数会发生不能够整除的情况
>这时幂数就会向下取整,就会多出一个底数来
>最终的结果就会等于多个不能整除情况下产生的底数相乘
Python解法:
class Solution:
def myPow(self, x: float, n: int) -> float:
if x==0:
return 0
if n<0:
x=1/x
n=-n
res=1
while n!=0:
if n&1==1:
res*=x
x*=x
n>>=1
return res
Java解法:
class Solution {
public double myPow(double x, int n) {
if (x == 0) {
return 0;
}
if (n < 0) {
x = 1 / x;
n = -n;
}
double res = 1;
while (n != 0) {
if ((n & 1) == 1) {
res *= x;
}
x *= x;
n >>>= 1;
}
return res;
}
}