Interview Guides
Given the head of a singly linked list, reverse the list and return the new head. Each node contains an integer value and a next pointer. The function should modify the links in-place rather than creating a second list.
0 <= number of nodes <= 5000-5000 <= Node.val <= 5000