[LeetCode]50.Pow(x, n)
【题目】
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)相关推荐
- 【分治】LeetCode 50. Pow(x, n)
LeetCode 50. Pow(x, n) Solution1:我的答案 偷鸡摸狗的做法 class Solution { public:double myPow(double x, int n) ...
- c语言的 pow函数是快速幂吗,leetcode 50. Pow(x, n)(快速幂)
就是一个二分法快速幂. 但是需要注意的问题是这里是实数,而且n可能为负. int的范围是-2,147,483,648 至 2,147,483,647.如果为-2,147,483,648那么直接n=-n ...
- Leetcode 50. Pow(x, n)
50. Pow(x, n) Total Accepted: 96891 Total Submissions: 348858 Difficulty: Medium Implement pow(x, n) ...
- LeetCode 50. Pow(x, n)(二分查找)
文章目录 1. 题目 2. 二分查找 2.1 递归 2.2 循环 1. 题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 示例 输入: 2.00000, 10 输出: 1024.000 ...
- leetCode 50.Pow(x, n) (x的n次方) 解题思路和方法
Pow(x, n) Implement pow(x, n). 思路:题目不算难.可是须要考虑的情况比較多. 详细代码例如以下: public class Solution {public double ...
- leetcode 50. Pow(x, n) 快速幂
好像没怎么快 #include <iostream> #include <math.h> using namespace std;class Solution {public: ...
- leetcode 50. Pow(x,n)
题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 解法 快速幂 利用二进制运算的性质 class Solution {public:double myPow(double x, int ...
- [Leetcode]50. Pow(x, n)
Implement pow(x, n). 我的做法就比较傻了.排除了所有的特殊情况(而且double一般不可以直接判断==),然后常规情况用循环来做.- -||| 直接用循环,时间复杂度就比较大.应该 ...
- leetcode || 50、Pow(x, n)
problem: Implement pow(x, n). Hide Tags Math Binary Search 题意:求x的n次幂 thinking: (1)最简单想到的是直观上的数学幂函数求法 ...
- 【LeetCode】50. Pow(x, n) (3 solutions)
Pow(x, n) Implement pow(x, n). 按照定义做的O(n)肯定是TLE的. 利用这个信息:x2n = (xn)2 有个注意点,当n为负是,直接取反是不可行的. 由于int的表示 ...
最新文章
- Linux基础—screen命令
- 导致UPS蓄电池损坏的原因有哪些?
- window.print只打印了1页的原因
- xfce4设置屏保/锁屏时间
- python中numpy是什么_什么是NumPy?
- 雷林鹏分享:C# 多态性
- imageview设置在最顶层_发电厂烟囱障碍照明设置要求(注电单选484)
- matlab 垂直边缘检测,matlab 边缘检测
- mysql 开启慢查明_mysql开启慢查询方法
- 怎么把GMS的软件转到HMS
- IIS6/IIS7无法打开IIS管理器的解决方法。
- 计算机应用基础2-excel,《2014计算机应用基础excel2.doc
- 微信卡券开发错误自排查参考文档
- 华为机试:VLAN资源池
- 开源文档管理系统mysql_14款开源文档管理系统
- hotmail手机端_Hotmail邮箱客户端下载-Hotmail手机版下载 苹果版v2.48.0-PC6苹果网
- redis安装教程和redis集群搭建--主从复制(读写分离)、中间人模式(主仆兼具、去中心化)、反客为主、哨兵模式,从实战出发的保姆级别教程
- 骗子、假先知们一夜暴富背后:区块链是回归互联网本来意义的唯一希望|深度
- C++【STL】【string类的使用】
- MOOC(massive open online courses)
热门文章
- 当我们在讨论机器学习时我们在说些什么?
- 3分钟tips:什么是特征向量?什么是特征值?
- FFMPEG geq与比较函数
- 哪所大学教php_哪所学校保研容易进?准保研生们我来教你怎么选!
- centos7 默认启动项_如何在centos7中搭建 ISCSI 服务
- 使用std:sort和Eigen根据矩阵某一行/列元素对矩阵的行/列排序
- 力扣-525 连续数组
- Andoid Activity.getWindowManager().getDefaultDisplay().getWidth()已被废弃
- 用idea搭建SSM框架maven项目
- (转) SpringBoot非官方教程 | 第一篇:构建第一个SpringBoot工程