Question: A linked list contains a cycle if, starting from some node p, following a sufficient number of next links brings us back to node p. Node p does not have to be the first node in the list. Assume that you have a linked list that contains N nodes. However, the value of N is unknown.
a. Design an O(N) algorithm to determine whether the list contains a cycle. You may use O(N) extra space.
b. Repeat part (a), but use only O(1) extra space.