50. Pow(x, n)

Total Accepted: 96891 Total Submissions: 348858 Difficulty: Medium

Implement pow(xn).

思路:分情况讨论:
1.n=0,返回1

2.n<0,转换为n>0的情况处理

3.n>0,举个例子:n=19时。

19=10011,所以x^19=x^10011=x^(10000+10+1)。所以只要看n的最末尾是否为1,如果为1,则累乘当前的x。每个循环,x=x*x,n=n>>1(n/2)。

注意:int的最小值INT_MIN=-2147483648,int的最大值INT_MAX=2147483647,可以看到INT_MIN!=INT_MAX;

代码:

迭代:

 1 class Solution {
 2 public:
 3     double myPow(double x, int n) {
 4         if(n<0){
 5             if(n==INT_MIN) return 1.0/(x*myPow(x,INT_MAX));
 6             return 1.0/myPow(x,-n);
 7         }
 8         if(n==0){
 9             return 1;
10         }
11         double product=1;
12         for(;n>0;x*=x,n=n>>1){
13             if(n&1){
14                 product*=x;
15             }
16         }
17         return product;
18     }
19 };

递归:

 1 class Solution {
 2 public:
 3     double myPow(double x, int n) {
 4         if(n==0) return 1.0;
 5         double product=myPow(x,n/2);
 6         product*=product;
 7         if(n<0){
 8             x=1/x;
 9         }
10         return (n%2==0)?product:product*x;
11     }
12 };

转载于:https://www.cnblogs.com/Deribs4/p/5635301.html

Leetcode 50. Pow(x, n)相关推荐

  1. 【分治】LeetCode 50. Pow(x, n)

    LeetCode 50. Pow(x, n) Solution1:我的答案 偷鸡摸狗的做法 class Solution { public:double myPow(double x, int n) ...

  2. c语言的 pow函数是快速幂吗,leetcode 50. Pow(x, n)(快速幂)

    就是一个二分法快速幂. 但是需要注意的问题是这里是实数,而且n可能为负. int的范围是-2,147,483,648 至 2,147,483,647.如果为-2,147,483,648那么直接n=-n ...

  3. LeetCode 50. Pow(x, n)(二分查找)

    文章目录 1. 题目 2. 二分查找 2.1 递归 2.2 循环 1. 题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 示例 输入: 2.00000, 10 输出: 1024.000 ...

  4. leetCode 50.Pow(x, n) (x的n次方) 解题思路和方法

    Pow(x, n) Implement pow(x, n). 思路:题目不算难.可是须要考虑的情况比較多. 详细代码例如以下: public class Solution {public double ...

  5. leetcode 50. Pow(x, n) 快速幂

    好像没怎么快 #include <iostream> #include <math.h> using namespace std;class Solution {public: ...

  6. leetcode 50. Pow(x,n)

    题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 解法 快速幂 利用二进制运算的性质 class Solution {public:double myPow(double x, int ...

  7. [Leetcode]50. Pow(x, n)

    Implement pow(x, n). 我的做法就比较傻了.排除了所有的特殊情况(而且double一般不可以直接判断==),然后常规情况用循环来做.- -||| 直接用循环,时间复杂度就比较大.应该 ...

  8. leetcode || 50、Pow(x, n)

    problem: Implement pow(x, n). Hide Tags Math Binary Search 题意:求x的n次幂 thinking: (1)最简单想到的是直观上的数学幂函数求法 ...

  9. 【LeetCode】50. Pow(x, n) (3 solutions)

    Pow(x, n) Implement pow(x, n). 按照定义做的O(n)肯定是TLE的. 利用这个信息:x2n = (xn)2 有个注意点,当n为负是,直接取反是不可行的. 由于int的表示 ...

最新文章

  1. desktop docker 无法卸载_用containerd替换docker(shim)
  2. mysql主从skip1677_解决字符集不同引起的主从同步异常1677报错问题
  3. 开始JBoss BPM流程的3种基本方法
  4. iPad iPhone程序增加和删除启动画面
  5. 大数据-HDFS文件系统是什么
  6. linux docker自动启动命令行,docker容器内服务随容器自启动
  7. wxpython滑动面板_wxpython实现按钮切换界面的方法
  8. [Erlang 0079] RabbitMQ 初探
  9. java启动线程时 extends与implements的一个差异
  10. oracle卸载报错,oracle卸载
  11. 带经纬度的水印相机_水印今日相机安卓版下载-水印相机拍照时间地点app下载v2.8.8.14-西西软件下载...
  12. 高级架构师备考经验分享
  13. 开源crm系统VtigerCRM 7.3 保姆级安装教程
  14. 在线共享音乐吧(Online Share Music Bar)解决方案
  15. 夏令时引起的时间问题
  16. 测试枕头软件,360度模拟人体睡眠测试,选对枕头让睡眠一步到位
  17. UniSwap V3协议浅析(上)
  18. 扫描pc端页面二维码,在手机上签名
  19. 读一篇博客,写一段代码,每天写写Python自然就会了,每日Python第1天
  20. JavaScript for、for..in、for..of、forEach的区别

热门文章

  1. 2022-2028年中国改性尼龙行业市场全景评估及产业前景规划报告
  2. 站在巨人的肩膀上“思考”问题,重在思考而不是拿来主义
  3. 逗号分隔的字符串转换为Python中的列表 split
  4. 万事开头难!最新MyBatis程序配置教程(IDEA版)
  5. QNX Hypervisor管理程序
  6. 华为计算平台MDC810发布量产
  7. 人工智能训练云燧T10
  8. 自动驾驶仿真分析,提高研发效率
  9. [C] [编程题]连通块(DFS解决)
  10. python rjust() 方法 与 ljust()方法 的使用