leetcode 50. Pow(x, n)

来源:互联网 发布:新津知世 编辑:程序博客网 时间:2024/06/05 05:26

Implement pow(xn).

实现一个x的n次方的功能,这个题的难度主要在于要判断很多边界,否则会发生越界问题导致error,我也是试了很多次才ac

核心的实现方法是,以2为基数,每次计算都是x的a次方乘以x的a次方,其中a是2的次方数。

public class Solution {    public double myPow(double x, int n) {        boolean neg = false;        double t = 1.0;        if(n==0)return 1.0;        if(n%2==1 && x<0)neg = true;        x = Math.abs(x);        if(n<0){            if(x!=0)x=1/x;            else return Double.MAX_VALUE;        }        if(n==Integer.MIN_VALUE){            t *= x;            n++;        }        n = Math.abs(n);        while(n>0){            if((n&1)==1){                if(t>Double.MAX_VALUE/x)return Double.MAX_VALUE;                t *= x;            }            x *= x;            n = n>>1;        }        return neg?-t:t;                }}