Обратный связанный список - как удалить «Нет», который идет в конце (из вывода) - PullRequest
0 голосов
/ 15 февраля 2020

Я решаю эту проблему с помощью leetcode - Обратный связанный список

Мой код работает нормально, я считаю, но я получаю "None" в выводе. Как я могу удалить это?

Вот так поступает вывод для входа [1,2,3,4,5]:

Выход: [5,4,3,2,1,None]

Вот код, который я пробовал:

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:

        if head is None: return None

        if head.next is None: return head

        cur = head
        prev = ListNode(None)
        temp = head.next

        while temp:
            cur.next = prev
            prev = cur
            cur = temp
            temp = temp.next

        if temp is None:
            cur.next = prev

        head = cur
        return head

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

В качестве дополнительного ответа вы используете слишком много бесполезных операторов if, которых вы могли бы избежать. Как и в случае с вашим ответом, вы можете просто уменьшить его до следующего:

def reverseList(self, head: ListNode) -> ListNode:
prev = None

while head:
    temp  = head.next
    head.next = prev
    prev = head
    head = temp

return prev
1 голос
/ 15 февраля 2020

С помощью prev = ListNode(None) вы создаете новый узел с value = None и следующим узлом None.
Таким образом, в вашем примере Node 1 не имеет None как self.next, но узел с None как self .val.

prev = None

должен решить проблему.

...