例: 1-> 2-> 3-> 2-> 1
1. Use el puntero doble para encontrar el punto medio superior.
Es decir: encontrar el cuarto nodo 2
2. Invierta la última mitad de la lista vinculada
: : 1-> 2-> 3-> 1-> 2
3. Juzgue si la mitad frontal y posterior de la lista vinculada son iguales, si es impar, independientemente del valor medio
Eso es juzgar 1, 2 == 1, 2
Nota:
# Método de dos nodos:
1. La condición para que dos nodos encuentren un nodo intermedio es mientras fast y fast.next, ¿por qué no necesitan fast.next.next? Esto se debe a que para acceder a fast.next.next, es suficiente tener fast.next, porque el nodo tiene un valor predeterminado siguiente: node.next = None
2. Cuando los nodos impares necesitan slow = slow.next. Los motivos son los siguientes
1-> 2-> 3-> 2-> 1
rápido 1 1 1
lento 1 1 1
# Cuando se invierte la segunda mitad de la lista vinculada:
1-> 2-> 3-> 2-> 1-> Ninguno
1-> 2-> 3 Ninguno <- 2 <- 1 <- Ninguno
3. Tenga en cuenta que después del cambio en el último paso, preNext corresponde a 1 en lugar de la curcur que se da por sentado, luego curNode corresponde a None a la derecha
Código: