LeetCode_Pow_x_n
来源:互联网 发布:优化农业结构 编辑:程序博客网 时间:2024/04/28 17:37
Implement pow(x, n).
题目很简单,就是实现x的n次方运算:
首先要考虑到各种输入情况:
1)x=0 返回0直接退出
2) n=0 返回1直接推出
3)n<0 需要先求x的abs(n)次方,再取倒数
4)n=0,直接求解即可
另外,如果直接进行n次乘法,肯定超时想都不要想,
最初的想法是,对于任何一个数都可以用1+2+2^2+2^3+.......+2^n组成(不用证明了吧,大家都是学计算机的)
所以保存每个x^1,x^2,...,x^n,空间复杂读O(logn)然后对指数n进行拆分,进而进行相乘操作得到结果,以减少乘法执行的次数,当然这里我还没有考虑到最终结果溢出的情况,写完初始的代码后竟然出现MLE,仔细一分析原来并不需要保存中间结果,空间复杂度可以减少到O(1)
代码如下:
class Solution {public: double pow(double x, int n) { if (x==0) { return 0; } if(n==0) { return 1; } double result=1.0; double p=x; //make sure expoment>0 int expoment=abs(n); int st=1; //keep the middle result /* vector <double> powRel; powRel.push_back(p); while (st<=expoment) { st=st<<1; powRel.push_back(p); }*/ while (expoment>0) { if (expoment&1) { result*=p; } p=p*p; expoment=expoment>>1; } if (n<0) { return (1.0/result); } return result; }};
0 0
- LeetCode_Pow_x_n
- 浅析UML之规则,公共机制
- mina学习笔记三:一切的源头IoService
- fckeditor上传文件配置
- nginx使用SSL指南
- 浅析UML之RUP
- LeetCode_Pow_x_n
- (转发)scikit-learn使用笔记与sign prediction简单小结
- Java基础——代理模式
- ngui popuplist 得到对应项ID
- opnet14.5+vs2010+win7(64位)安装
- NYOJ-824 Greedy Mouse
- Struts2参数传递,Domain Model参数传递
- Sql Server 优化-提升查询效率的总结
- C#对arcgis SHP文件属性表dbf的操作