【LeetCode】 50. pow (x, n) (medio) (Java)
Tema Dirección: https://leetcode.com/problems/powx-n/
Descripción Asunto:
Implementar pow (x, n), que calcula x elevado a la potencia n (xn).
Ejemplo 1:
Input: 2.00000, 10
Output: 1024.00000
Ejemplo 2:
Input: 2.10000, 3
Output: 9.26100
Ejemplo 3:
Input: 2.00000, -2
Output: 0.25000
Explanation: 2-2 = 1/22 = 1/4 = 0.25
Nota:
-100.0 < x < 100.0
n is a 32-bit signed integer, within the range [−2^31, 2^31 − 1]
Sujeto al efecto
Lograr pow (x, n), es decir, una función de n-ésima potencia de x.
Enfoque de resolución de problemas
Dicotomía, constantemente medio para la multiplicación complejidad O (log n)
class Solution {
public double myPow(double x, int n) {
if (x == 0) return 0;
if (n == 0) return 1;
if (n == 1) return x;
if (n == -1) return 1 / x;
double half = myPow(x, n / 2);
if (n > 0) {
return n % 2 == 0 ? half * half : half * half * x;
} else {
return n % 2 == 0 ? half * half : half * half / x;
}
}
}
Cuando la ejecución: 1 ms, venció el 97,78% de todos los usuarios a presentar en Java
consumo de memoria: 37,8 MB, batir el 5,02% de todos los usuarios a presentar en Java