Notas de cepillado de Likou: 50.Pow (x, n) (dos formas de escritura, dicotomía, operación ordinaria y bit, el mismo método, fácil de entender)

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:
Inserte la descripción de la imagen aquí
Ejemplo 2:
Inserte la descripción de la imagen aquí
Ejemplo 3:
Inserte la descripción de la imagen aquí
Mensaje:
Inserte la descripción de la imagen aquí

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)

Inserte la descripción de la imagen aquí

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/

Supongo que te gusta

Origin blog.csdn.net/weixin_44414948/article/details/113820505
Recomendado
Clasificación