首页 > 代码库 > LeetCode 50. Pow(x, n)
LeetCode 50. Pow(x, n)
Implement pow(x, n).
【题目分析】
实现幂指数函数。
【思路】
1. 防止overflow的发生
2. 减少时间复杂度
最简单的思路就是遍历啦,但是当n < 0时,有人会把n先变为-n,这样当n = Integer.MIN_VALUE是会产生溢出。
直接遍历相乘的时间复杂度很高,比如下面的方法是O(N)的复杂度:
1 public class Solution { 2 public double myPow(double x, int n) { 3 if(n == 0) return 1; 4 else if(n > 0) return x*myPow(x, n-1); 5 else return 1/x*myPow(x, n+1); 6 } 7 }
一种O(logN)时间复杂度的方法如下:
1 public class Solution { 2 public double myPow(double x, int n) { 3 if(n == 0) return 1.; 4 double res = myPow(x, n / 2); 5 return n % 2 == 0 ? res * res : n < 0 ? res * res * (1 / x) : res * res * x; 6 } 7 }
LeetCode 50. Pow(x, n)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。