[Operación de bits simple] 1290. Lista enlazada binaria a entero (recorrido + int () + str () + <<)

[Título]
Le da el encabezado del nodo de referencia de una lista enlazada individualmente. El valor de cada nodo en la lista vinculada es 0 o 1. Se sabe que esta lista enlazada es una representación binaria de un número entero.
Devuelva el valor decimal del número representado por la lista vinculada.
[Ejemplo 1]
Entrada: cabeza = [1,0,1]
Salida: 5
Explicación: El número binario (101) se convierte en número decimal (5)
[Ejemplo 2]
Entrada: cabeza = [0]
Salida: 0
[Ejemplo 3 ]
Entrada: cabeza = [1]
Salida: 1
[Ejemplo 4]
Entrada: cabeza = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]
Salida : 18880
[Ejemplo 5]
Entrada: cabeza = [0,0]
Salida: 0
[Mensaje] La
lista enlazada no está vacía.
El número total de nodos en la lista vinculada no supera los 30.
El valor de cada nodo es 0 o 1.
[Código]
[Python]
Inserte la descripción de la imagen aquí

class Solution:
    def getDecimalValue(self, head: ListNode) -> int:
        num=0
        while head:
            num=num*2+head.val
            head=head.next
        return num

[Método 2: Traverse + int ()]
Inserte la descripción de la imagen aquí

class Solution:
    def getDecimalValue(self, head: ListNode) -> int:
        s=""
        while head:
            s+=str(head.val)
            head=head.next
        return int(s,2)

[Método 3: operación de bits] Desde
Inserte la descripción de la imagen aquí
la perspectiva de la operación de bits :
operación decimal y comparación binaria

*  表示为	<<
/  表示为	>>
+  表示为	|
class Solution:
    def getDecimalValue(self, head: ListNode) -> int:
        re = 0
        while head is not None:
            re = (re << 1) | head.val
            head = head.next
        return re

Supongo que te gusta

Origin blog.csdn.net/kz_java/article/details/115054064
Recomendado
Clasificación