Loading...
Loading...
Loading...
Given the head of a singly linked list, reverse the list, and return the new head.
Input: Head of singly linked list. Output: Head of reversed linked list.
Input: head = [1,2,3,4,5] → Output: [5,4,3,2,1]
Input: head = [1,2] → Output: [2,1]
Input: head = [] → Output: []
prev = null, curr = head. Loop: save next = curr.next, set curr.next = prev, advance prev = curr, curr = next. Return prev. Time: O(n), Space: O(1).reverse(head) returns new head; head.next.next = head; head.next = null. Time: O(n), Space: O(n) stack.next pointer before reassigning.Number of nodes: [0, 5000] -5000 <= Node.val <= 5000