Pow(x, n) -- LeetCode
2016-08-26 06:59
288 查看
Implement pow(x, n).
思路:n为0时返回1。
之后我们只考虑n为正的情况(n为负时结果为正时的倒数)。之后我们通过二分法来求值。
假如n为偶数,则pow(x, n) = pow(x, n / 2) * pow(x, n / 2)。
假如n为奇数,则pow(x, n) = pow(x, n / 2) * pow(x, n / 2) * x。
因为n为int类型,若n为INT_MIN时转换成正数会溢出,因此我们先将n转换成int64_t。
算法复杂度O(logn)
思路:n为0时返回1。
之后我们只考虑n为正的情况(n为负时结果为正时的倒数)。之后我们通过二分法来求值。
假如n为偶数,则pow(x, n) = pow(x, n / 2) * pow(x, n / 2)。
假如n为奇数,则pow(x, n) = pow(x, n / 2) * pow(x, n / 2) * x。
因为n为int类型,若n为INT_MIN时转换成正数会溢出,因此我们先将n转换成int64_t。
算法复杂度O(logn)
class Solution { public: double myPow(double x, int n) { if (n == 0) return 1; int64_t pow = std::abs((int64_t)n); double subPow = myPow(x, pow >> 1); double val = subPow * subPow * (pow & 1 ? x : 1); return n > 0 ? val : 1 / val; } };
相关文章推荐
- [LeetCode-50] Pow(x, n)(数值的整数次方)
- 【leetcode】【50】Pow(x, n)
- 【Leetcode】Pow(x, n)
- [LeetCode] Pow(x, n) 求x的n次方
- leetcode 50: Pow(x, n)
- LeetCode--Pow(x,n)二分法
- leetcode:Pow(x, n) 【Java】
- LeetCode - Pow(x, n)
- Pow(x,n)--LeetCode
- [leetcode] Pow(x,n)
- [leetcode]Pow(x, n)
- 【LeetCode】LeetCode50 Pow(x, n)
- leetcode-50-Pow(x, n)
- LeetCode 第 50 题 (Pow(x, n))
- LeetCode 372. Super Pow (快速幂取模)
- LeetCode---Pow(x, n)
- leetcode 二分法 Pow(x, n)
- LeetCode || Pow(x, n)
- 剑指Offer 面试题11:数的整数次方(Leetcode50. Pow(x, n))【C库函数pow模拟】题解
- LeetCode. Pow(x, n)