Given the head of a singly linked list, reverse the list, and return the reversed list.
\
Solution 1: Iterative:
class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
prev, curr = None, head
while curr:
temp = curr.next
curr.next = prev
prev, curr = curr, temp
return prev
\
Solution 2: recursive:

class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head:
return None
newHead = head
if head.next:
newHead = self.reverseList(head.next) #保证更新到最末尾的node
head.next.next = head
head.next = None
return newHead