LeetCode_50_Pow(x, n)
2017-07-05 19:28
459 查看
题目:Implement pow(x, n).
解法1:常规递归,时间复杂度o(n)
解法2:分治法改进递归,注意 n == INT_MIN 情况需单独考虑。尽量直接return而不要赋值给变量返回,容易出问题
double myPow(double x, int n) {
if (n == 0)
return 1.0;
else if (n > 0)
{
double half = (double)myPow(x, n / 2);
if (n % 2 == 0)
return half*half;
else
return half*half*x;
}
else
{
if (n == INT_MIN) {
return 1.0 / (pow(x, INT_MAX)*x);
//return 1.0 / (half*half);
}
n = -n;
double half = (double)myPow(x, n / 2);
if (n % 2 == 0)
return 1.0 / (half*half);
else
return 1.0 / (half*half*x);
}
}
解法1:常规递归,时间复杂度o(n)
解法2:分治法改进递归,注意 n == INT_MIN 情况需单独考虑。尽量直接return而不要赋值给变量返回,容易出问题
double myPow(double x, int n) {
if (n == 0)
return 1.0;
else if (n > 0)
{
double half = (double)myPow(x, n / 2);
if (n % 2 == 0)
return half*half;
else
return half*half*x;
}
else
{
if (n == INT_MIN) {
return 1.0 / (pow(x, INT_MAX)*x);
//return 1.0 / (half*half);
}
n = -n;
double half = (double)myPow(x, n / 2);
if (n % 2 == 0)
return 1.0 / (half*half);
else
return 1.0 / (half*half*x);
}
}
相关文章推荐
- Leetcode 50 Pow(x,n) (求x的n次方)
- LeetCode 50 Pow(x, n)
- [LeetCode-50] Pow(x, n)(数值的整数次方)
- leetcode_question_50 Pow(x, n)
- Leetcode50 Pow(x,n)
- 【LeetCode】LeetCode50 Pow(x, n)
- Leetcode(50):Pow(x, n)
- Leetcode-50: Pow(x,n)
- LeetCode(50) Pow(x, n)
- 50. Pow(x, n) LeetCode
- leetcode50_Pow(x, n)
- LeetCode(50)Pow
- LeetCode 50: Pow(x, n)
- LeetCode---(50)Pow(x, n)
- LeetCode 50 — Pow(x, n)(C++ Java Python)
- Leetcode 50 Pow(x, n)
- LeetCode 50 - Pow(x, n)
- Leetcode 50 Pow(x, n) 两种方式求解
- [LeetCode]50 Pow(x, n)
- leetcode || 50、Pow(x, n)