0
点赞
收藏
分享

微信扫一扫

【LeetCode每日一题】剑指 Offer 16. 数值的整数次方(持续更新)


不要自卑,去提升实力
互联网行业谁技术牛谁是爹
如果文章可以带给你能量,那是最好的事!请相信自己
加油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;
}
}


举报

相关推荐

0 条评论