[LeetCode50. Pow(x, n)] | 刷题打卡

135 阅读1分钟

题目描述

实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。

示例 1:

输入:x = 2.00000, n = 10 输出:1024.00000 示例 2:

输入:x = 2.10000, n = 3 输出:9.26100 示例 3:

输入:x = 2.00000, n = -2 输出:0.25000 解释:2-2 = 1/22 = 1/4 = 0.25  

提示:

-100.0 < x < 100.0 -231 <= n <= 231-1 -104 <= xn <= 104

来源:力扣(LeetCode) 链接: 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路分析

通过指数折半进行优化循环计算次数,注意边界问题

AC 代码

double myPow(double x, int n){
    long long _n = n;
    if (_n < 0) {
        x = 1 / x;
        _n = -_n;
    }
    if (x == 0) {
        return 0;
    }
    if (x == 1) {
        return 1;
    }
    if (x == -1) {
        if ((_n & 1) == 1) {
            return -1;
        } else {
            return 1;
        }
    }
    double res = 1;
    double temp = 1;
    if (_n == 1) {
        res = x;
    }
    while (_n > 1) {
        res = x * x;
        if ((_n & 1) == 1) {
            temp *= x;
        }
        x = res;
        _n /= 2;
    }
    return res * temp;
}

总结

注意边界问题即可

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情