【题目】

Implement pow(x, n).

【分析】

采用分治思想。

对于n是奇数时,x^n = x^(n/2)*  x^(n/2)* x

对于n是偶数时,x^n = x^(n/2)*  x^(n/2)

x^(n/2)用一个变量sub记录,x^n = sub * sub * x^(n % 2)  这样 x^(n/2)就计算一次

注意:n有可能是负数  转换为  1.0 / pow(x, -n)   此时-n有可能溢出      n 逐渐减半的过程中就会解决溢出问题。

【代码】

class Solution {
public:double pow(double x, int n) {// 终止条件if(n < 0){return 1.0 / pow(x,-n);}//ifif(n == 0){return 1.0;}//ifif(n == 1){return x;}//if// 递归// x^n = x^(n/2) * x^(n/2) *x^(n%2)double sub = pow(x,n / 2);return  sub * sub * pow(x,n % 2);}
};

这是一种错误的答案:n溢出导致死循环

【代码二】

/*********************************
*   日期:2015-01-29
*   作者:SJF0115
*   题目: 50.Pow(x, n)
*   网址:https://oj.leetcode.com/problems/powx-n/
*   结果:AC
*   来源:LeetCode
*   博客:
**********************************/
#include <iostream>
using namespace std;class Solution {
public:double pow(double x, int n) {// 负数if(n < 0){return 1.0 / pows(x,-n);}//if// 正数else{return pows(x,n);}}
private:double pows(double x,int n){// 终止条件if(n == 0){return 1.0;}//ifif(n == 1){return x;}//if// 递归// x^n = x^(n/2) * x^(n/2) *x^(n%2)double sub = pow(x,n / 2);return  sub * sub * pow(x,n % 2);}
};int main(){Solution solution;double x = 2.5;int n = 2;double result = solution.pow(x,n);// 输出cout<<result<<endl;return 0;
}

[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)

    50. Pow(x, n) Total Accepted: 96891 Total Submissions: 348858 Difficulty: Medium Implement pow(x, n) ...

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

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

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

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

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

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

  7. leetcode 50. Pow(x,n)

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

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

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

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

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

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

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

最新文章

  1. Linux基础—screen命令
  2. 导致UPS蓄电池损坏的原因有哪些?
  3. window.print只打印了1页的原因
  4. xfce4设置屏保/锁屏时间
  5. python中numpy是什么_什么是NumPy?
  6. 雷林鹏分享:C# 多态性
  7. imageview设置在最顶层_发电厂烟囱障碍照明设置要求(注电单选484)
  8. matlab 垂直边缘检测,matlab 边缘检测
  9. mysql 开启慢查明_mysql开启慢查询方法
  10. 怎么把GMS的软件转到HMS
  11. IIS6/IIS7无法打开IIS管理器的解决方法。
  12. 计算机应用基础2-excel,《2014计算机应用基础excel2.doc
  13. 微信卡券开发错误自排查参考文档
  14. 华为机试:VLAN资源池
  15. 开源文档管理系统mysql_14款开源文档管理系统
  16. hotmail手机端_Hotmail邮箱客户端下载-Hotmail手机版下载 苹果版v2.48.0-PC6苹果网
  17. redis安装教程和redis集群搭建--主从复制(读写分离)、中间人模式(主仆兼具、去中心化)、反客为主、哨兵模式,从实战出发的保姆级别教程
  18. 骗子、假先知们一夜暴富背后:区块链是回归互联网本来意义的唯一希望|深度
  19. C++【STL】【string类的使用】
  20. MOOC(massive open online courses)

热门文章

  1. 当我们在讨论机器学习时我们在说些什么?
  2. 3分钟tips:什么是特征向量?什么是特征值?
  3. FFMPEG geq与比较函数
  4. 哪所大学教php_哪所学校保研容易进?准保研生们我来教你怎么选!
  5. centos7 默认启动项_如何在centos7中搭建 ISCSI 服务
  6. 使用std:sort和Eigen根据矩阵某一行/列元素对矩阵的行/列排序
  7. 力扣-525 连续数组
  8. Andoid Activity.getWindowManager().getDefaultDisplay().getWidth()已被废弃
  9. 用idea搭建SSM框架maven项目
  10. (转) SpringBoot非官方教程 | 第一篇:构建第一个SpringBoot工程