首页 > 代码库 > leetcode------Pow(x, n)(3)
leetcode------Pow(x, n)(3)
标题 | Pow(x, n) |
通过率 | 26.1% |
难度 | 中等 |
Implement pow(x, n).
以为只是单纯的求xn,习惯了用java里面的math.pow(x,n),所以我认为传进来的值都是比较正常的,谁知道竟然会传n<0的数。。。。。直接泪奔,然后再尝试。。。发现栈溢出,也就是说单纯的递归或者非递归针对此题已经不行了。
考虑分治法,因为不管怎么都是n个x相乘,先分成两半去乘不是更好,整个算法的时间复杂度T(n)=2T(n/2)+1,由主方法得出O(lgn)。
那么会出现一个关键的问题就是n不能被2整除,也就是处理奇数偶数。偶数就是最后的两半相乘,奇数就是两半相乘后再乘以x。
附加:依然要处理n的正负问题:
java代码如下:
1 public class Solution { 2 //n maybe a fu shu 3 public double pow(double x, int n) { 4 5 if (n < 0) { 6 return 1 / power(x, -n); 7 } else { 8 return power(x, n); 9 }10 }11 public double power(double x, int n) {12 if (n == 0)13 return 1;14 15 double v = power(x, n / 2);16 17 if (n % 2 == 0) {18 return v * v;19 } else {20 return v * v * x;21 }22 }23 }
leetcode------Pow(x, n)(3)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。