Given a linked list, swap every two adjacent nodes and return its head. You must solve the problem without modifying the values in the list’s nodes (i.e., only nodes themselves may be changed.)
Example 1:
Input: head = [1,2,3,4]
Output: [2,1,4,3]
Example 2:
Input: head = []
Output: []
Example 3:
Input: head = [1]
Output: [1]
Constraints:
- The number of nodes in the list is in the range
[0, 100]
. 0 <= Node.val <= 100
Solution-iteration
First of all, in order to avoid disturbing the head node separately, generally first apply for an empty node to point to the head node, and then use a pointer to traverse the entire linked list.
Point is a position in front of the two nodes to be exchanged.
Time Complexity: O(N), as we traverse the entire list only once.
Space Complexity: O(N), due to additional dummy list.