Skip to content

Files

Latest commit

Mar 3, 2020
efaab32 · Mar 3, 2020

History

History
103 lines (68 loc) · 1.39 KB

50.md

File metadata and controls

103 lines (68 loc) · 1.39 KB

50. Pow(x, n)

题目描述

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

示例

示例 1:

输入: 2.00000, 10
输出: 1024.00000

示例 2:

输入: 2.10000, 3
输出: 9.26100

示例 3:

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

提示:

-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。

Code

Solution1

暴力解法(超时)

class Solution {
    public double myPow(double x, int n) {
        if (n == 0 || x == 1) return 1;
        double res = 1;
        int m = Math.abs(n);
        while (m != 0) {
            res *= x;
            --m;
        }

        return n > 0 ? res : 1 / res;
    }
}

Solution2

二分

class Solution {
    public double myPow(double x, int n) {
        if(x == 0) return 0;
        long b = n;
        double res = 1.0;
        if(b < 0) {
            x = 1 / x;
            b = -b;
        }
        while(b > 0) {
            if((b & 1) == 1) res *= x;
            x *= x;
            b >>= 1;
        }
        return res;
    }
}
复杂度分析:
  • 时间复杂度 O(logn)
  • 空间复杂度 O(1)

题解

https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/solution/mian-shi-ti-16-shu-zhi-de-zheng-shu-ci-fang-kuai-s/