      "\n",
      "* Use two pointers i, j, initialized to the head\n",
      "* Increment i and j until they meet\n",
      "    * j is incremented twice as fast as i\n",
      "        * If j's next is NULL, we do not have a circular list\n",
      "* When i and j meet, move j to the head\n",
      "* Increment i and j one node at a time until they meet\n",
      "* Where they meet is the start of the loop\n",
      "\n",
      "Complexity:\n",
 
</s> remove     "    * Two elements\n",
    "    * Three or more elements\n",
    "* General case"
 </s> add     "    * Two or more elements\n",
    "* Circular linked list general case" </s> remove     "    * Two elements\n",
    "    * Three or more elements\n",
    "* General case"
 </s> add     "    * Two or more elements\n",
    "* Circular linked list general case" </s> remove     "* Space: In-place"
 </s> add     "* Space: O(1)"
    "        * If j's next is None, we do not have a circular list\n",
      "\n",
      "* Use two pointers i, j, initialized to the head\n",
      "* Increment i and j until they meet\n",
      "    * j is incremented twice as fast as i\n",
    "        * If j's next is None, we do not have a circular list\n",
      "* When i and j meet, move j to the head\n",
      "* Increment i and j one node at a time until they meet\n",
      "* Where they meet is the start of the loop\n",
      "\n",
      "Complexity:\n",
keep keep keep keep replace keep keep keep keep keep
 Tweaked find loop start challenge test cases and algorith discussion. 
linked_lists/find_loop_start/find_loop_start_solution.ipynb