leetCode练习(50)
来源:互联网 发布:全文翻译的软件 编辑:程序博客网 时间:2024/05/22 06:54
题目:Pow(x, n)
难度:medium
问题描述:
Implement pow(x, n).
解题思路:
实现幂函数,这里的题目x为实数,n为整数。注意n可以为负~数学差的我一开始就忘记了这一条件。
直接想到的方法就是for循环实现。简单代码如下:
public double myPow(double x, int n) {double res=1.0;if(n==0)return 1.0;if(n>0){for(int i=0;i<n;i++){res=res*x;}return res;}else{for(int i=0;i<-n;i++){res=res*x;}return 1/res;} }
提交后提示时间超时。这里的时间复杂度是O(n),想要进一步减小复杂度,可以想到类似分治算法,pow(x,n)=pow(x,n/2)*pow(x,n-b/2);
具体实现如下:
public double myPow2(double x, int n) {double half;if(n==0) return 1.0;if(n>0){half=(double)myPow2(x,n/2);if(n%2==0){return (double)half*half;}else{return (double)x*half*half;}}else{if(n==Integer.MIN_VALUE){return (1/x)*(1/myPow(x,-(n+1)));}else{return 1/myPow(x,-n);}} }需要在负数转正的边界问题上注意一下即可。
0 0
- leetCode练习(50)
- LeetCode 编程练习(50)
- leetCode练习(7)
- leetCode练习(9)
- leetCode练习(2)
- leetCode练习(14)
- leetCode练习(3)
- leetCode练习(4)
- leetCode练习(19)
- leetCode练习(18)
- leetCode练习(5)
- leetCode练习(15)
- leetCode练习(20)
- leetCode练习(21)
- leetCode练习(16)
- leetCode练习(17)
- leetCode练习(11)
- leetCode练习(24)
- 原生JS forEach()和map()遍历的区别以及兼容写法
- 简单的linux命令
- 在windows端建立本地node-gulp环境进行前端开发
- 怎么理解st_thread库(3)
- Redis主从配置和HA配置
- leetCode练习(50)
- 100. Same Tree
- C语言知识点完美总结
- 2016 Android注释技巧 Android Studio
- sqlite 数据过多,搜索结果慢,增加索引是个不错的方案
- linux 内核移植和根文件系统的制作
- 支付宝异步通知(notify_url)与return_url.
- iOS开发-获取网络流量
- (4.1.43.2)design support library:Snackbar