## Problem Statement

Constraints:

• The number of nodes in the list is the range `[0, 5000]`.
• `-5000 <= Node.val <= 5000`

## Solution

To reverse a LinkedList, we need to reverse one node at a time. We will start with a variable `current` which will initially point to the head of the LinkedList and a variable `previous` which will point to the previous node that we have processed; initially `previous` will point to null.

In a stepwise manner, we will reverse the `current` node by pointing it to the `previous` before moving on to the next node. Also, we will update the previous to always point to the `previous` node that we have processed. Here is the visual representation of our algorithm:

## Code

Here is what our algorithm will look like:

Python3
Python3

## Time Complexity

The time complexity of our algorithm will be O(N) where ‘N’ is the total number of nodes in the LinkedList.

## Space Complexity

We only used constant space, therefore, the space complexity of our algorithm is O(1).