Given the head of a linked list, return the node where the cycle begins. If there is no cycle, return None.
There is a cycle in a linked list if there is some node in the list that can be reached again by continuously following the next pointer.
Do not modify the linked list.
I used the most optimal Floyd's Tortoise and Hare Algorithm to find the answer with O(n) time and O(1) space complexity.