leetcode50. Pow(x, n)

举报
兔老大 发表于 2021/04/21 23:40:31 2021/04/21
【摘要】 实现 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就可以解决问题哈哈哈,我还为负数幂魔改了半天快速幂,怎么也搞不对。


  
  1. class Solution {
  2. public double myPow(double x, int n) {
  3. long N = n;
  4. if (N < 0) {
  5. x = 1 / x;
  6. N = -N;
  7. }
  8. double ans = 1;
  9. double current_product = x;
  10. for (long i = N; i > 0; i /= 2) {
  11. if ((i % 2) == 1) {
  12. ans = ans * current_product;
  13. }
  14. current_product = current_product * current_product;
  15. }
  16. return ans;
  17. }
  18. }

 

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/104057252

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。