Given the head of a singly linked list, reverse the list, and return the new head node. The linked list is defined as follows:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
Example 1:
Input: head = [1, 2, 3, 4, 5]
Output: [5, 4, 3, 2, 1]
Example 2:
Input: head = [1, 2]
Output: [2, 1]
-5000 <= Node.val <= 5000.