tema:
50 、 Pow (x, n)
Realice pow (x, n), es decir, calcule la n-ésima función de potencia de x (es decir, xn).
Ejemplo 1:
Ejemplo 2:
Ejemplo 3:
Mensaje:
Ideas de solución de problemas:
Dicotomía, mediante el cálculo de mitades, cada vez que n se reduce a la mitad, reduciendo la complejidad del tiempo.
Dos formas de escribir:
una, escritura ordinaria.
2. Escritura aritmética bit a bit.
Nota: De hecho, todos tienen el mismo significado y logran el mismo efecto. La velocidad también es similar.
Por ejemplo, n >> = 1 es equivalente an / = 2; n% 2 == 1 es equivalente an & 1 == 1 (juzgue si es un número impar)
Código Python de la solución del problema:
1. Escritura común
class Solution:
def myPow(self, x: float, n: int) -> float:
res = 1
if n < 0: x,n = 1/x,-n
while n: # 通过折半计算,每次把 n 减半,降低时间复杂度
if n%2 == 0:
x *= x
n /= 2
else:
res *=x
n -= 1
return res
Escritura de operación de dos bits
class Solution:
def myPow(self, x: float, n: int) -> float:
res = 1
if n < 0: x, n = 1 / x, -n
while n:
if n & 1: res *= x
x *= x
n >>= 1
return res
Autor: a-qing-ge
Enlaces: https://leetcode-cn.com/problems/powx-n/solution/er-fen-fa-pu-tong-xie-fa-yi-ji-wei-yun-s -cw8x /
Fuente: LeetCode https://leetcode-cn.com/problems/powx-n/