[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]
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 ()]
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
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