(Java)LeetCode-50. Pow(x, n)

来源:互联网 发布:小语网络加速器 编辑:程序博客网 时间:2024/06/07 06:27


Implement pow(xn).


这道题最慢时间复杂度也是O(n),快一些的是O(logn),主要是将n考虑为二进制的形式,某一位是1的话,就乘上相应的次方数即可。代码如下:


public class Solution {    public double myPow(double x, int n) {                        if(x == 1.0){            return x;        }        double sum = 1;double temp = x;boolean flag = false;if(n < 0){    flag = true;    n = -n;}while(n != 0){if(n % 2 == 1){sum = sum * temp;}temp = temp * temp;n = n >>> 1; }if(flag == false)            return sum;        else             return 1/sum;        }}


当然也可以用递归来写,从网上看到,代码如下:

public class Solution {    public double pow(double x, int n) {        if(n == 0)            return 1;        if(n<0){            n = -n;            x = 1/x;        }        return (n%2 == 0) ? pow(x*x, n/2) : x*pow(x*x, n/2);    }}



0 0
原创粉丝点击