leetcode50. Pow(x, n)
【摘要】 实现 pow(x, n) ,即计算 x 的 n 次幂函数。
示例 1:
输入: 2.00000, 10 输出: 1024.00000 示例 2:
输入: 2.10000, 3 输出: 9.26100 示例 3:
输入: 2.00000, -2 输出: 0.25000 解释: 2-2 = 1/22 = 1/4 = 0.25 说明:...
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.10000, 3
输出: 9.26100
示例 3:
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
说明:
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。
思路:快速幂,没什么好说的,唯一我没想到的(也是致命的)就是,对于负数次幂,只要反过来x就可以解决问题哈哈哈,我还为负数幂魔改了半天快速幂,怎么也搞不对。
-
class Solution {
-
public double myPow(double x, int n) {
-
long N = n;
-
if (N < 0) {
-
x = 1 / x;
-
N = -N;
-
}
-
double ans = 1;
-
double current_product = x;
-
for (long i = N; i > 0; i /= 2) {
-
if ((i % 2) == 1) {
-
ans = ans * current_product;
-
}
-
current_product = current_product * current_product;
-
}
-
return ans;
-
}
-
}
文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。
原文链接:fantianzuo.blog.csdn.net/article/details/104057252
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)