Leetcode 50. Pow(x, n)
50. Pow(x, n)
Implement pow(x, n).
思路:分情况讨论:
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)相关推荐
- 【分治】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)(二分查找)
文章目录 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的表示 ...
最新文章
- desktop docker 无法卸载_用containerd替换docker(shim)
- mysql主从skip1677_解决字符集不同引起的主从同步异常1677报错问题
- 开始JBoss BPM流程的3种基本方法
- iPad iPhone程序增加和删除启动画面
- 大数据-HDFS文件系统是什么
- linux docker自动启动命令行,docker容器内服务随容器自启动
- wxpython滑动面板_wxpython实现按钮切换界面的方法
- [Erlang 0079] RabbitMQ 初探
- java启动线程时 extends与implements的一个差异
- oracle卸载报错,oracle卸载
- 带经纬度的水印相机_水印今日相机安卓版下载-水印相机拍照时间地点app下载v2.8.8.14-西西软件下载...
- 高级架构师备考经验分享
- 开源crm系统VtigerCRM 7.3 保姆级安装教程
- 在线共享音乐吧(Online Share Music Bar)解决方案
- 夏令时引起的时间问题
- 测试枕头软件,360度模拟人体睡眠测试,选对枕头让睡眠一步到位
- UniSwap V3协议浅析(上)
- 扫描pc端页面二维码,在手机上签名
- 读一篇博客,写一段代码,每天写写Python自然就会了,每日Python第1天
- JavaScript for、for..in、for..of、forEach的区别
热门文章
- 2022-2028年中国改性尼龙行业市场全景评估及产业前景规划报告
- 站在巨人的肩膀上“思考”问题,重在思考而不是拿来主义
- 逗号分隔的字符串转换为Python中的列表 split
- 万事开头难!最新MyBatis程序配置教程(IDEA版)
- QNX Hypervisor管理程序
- 华为计算平台MDC810发布量产
- 人工智能训练云燧T10
- 自动驾驶仿真分析,提高研发效率
- [C] [编程题]连通块(DFS解决)
- python rjust() 方法 与 ljust()方法 的使用