Работает ли мое решение для определения палиндрома для связанного списка?

#python #linked-list

Вопрос:

Я написал ниже некоторый код, чтобы определить, является ли связанный список палиндромом, но когда я прогоняю его через тестовые случаи, время просто истекает. Есть идеи, что не так с кодом? Спасибо

 def isPalindrome(self, head: ListNode) -> bool:
    if head == None:
        return True

    length_ll = 0
    curr = head
    while curr:
        length_ll  =1
        curr = curr.next


    mid_point = length_ll//2

    head2 = head
    for _ in range(mid_point):
        head2 = head2.next             


    prev = head2
    curr = head2
    nex = head2.next

    while nex:
        curr = nex
        curr.next = prev
        nex = nex.next
        prev = curr
    head2.next = None


    curr = head
    curr2 = head2
    
    while curr or curr2:
        if curr2.val != curr.val:
            return False
        else:
            curr = curr.next
            curr2 = curr2.next

    return True
 

Ответ №1:

Ваше 3 while -е утверждение бесконечно (если curr2.val == curr.val оно никогда не прекратится)

Комментарии:

1. Привет, я отредактировал приведенный выше код, но я все еще получаю ошибку тайм-аута? Можете ли вы предложить, что не так, и возможное решение? Спасибо

2. Привет! Добавьте дополнительную информацию: что находится в вашем классе ListNode и какие тесты вы пытаетесь запустить