Как работают классы в python и как решать задачи на leetcode с их использованием?

задача - Given the head of a singly linked list, reverse the list, and return the reversed list https://leetcode.com/problems/reverse-linked-list/description/

Ответ на задачу:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        prev = None 
        while head != None:
            temp = head
            head = head.next
            temp.next = prev
            prev = temp
        return prev

НЕСКОЛЬКО ВОПРОСОВ

  1. Зачем переназначать переменную head несколько раз? temp = head prev = temp Ранее смотрел ответы на подобные задачи с классами, и там везде так делают, зачем? Отслеживать перемещение??

  2. Запускаю в своем редакторе, но получаю ошибку

     File "main.py", line 12, in reverseList
     head = head.next  AttributeError: 'list' object has no attribute 'next'
    

Код, в моем редакторе:

    from typing import Optional
# Definition for singly-linked list.
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        prev = None 
        while head != None:
            temp = head
            head = head.next
            temp.next = prev
            prev = temp
        return prev
        
            
t = Solution()
print(t.reverseList([1,2]))

Очень хотел бы разобраться в этом деле, надеюсь вы мне поможете)


Ответы (0 шт):