{ "cells": [ { "cell_type": "markdown", "id": "emotional-plastic", "metadata": {}, "source": [ "# List" ] }, { "cell_type": "code", "execution_count": 2, "id": "prepared-collect", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import IPython; IPython.display.HTML('''
''')" ] }, { "cell_type": "code", "execution_count": 2, "id": "3d535d84-50d6-4c51-84a5-d6639730a646", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3]\n", "[1, 2, 3]\n" ] } ], "source": [ "class ListNode:\n", " def __init__(self, val=0, next=None):\n", " self.val = val\n", " self.next = next\n", "\n", " def __repr__(self):\n", " cur = self\n", " vals = []\n", " while cur:\n", " vals.append(cur.val)\n", " cur = cur.next\n", " return str(vals)\n", "\n", "class List:\n", " def __init__(self, vals):\n", " if not vals:\n", " raise ValueError('Must initialize List with a non-empty array. ')\n", " cur = self.head = ListNode(vals[0])\n", " for val in vals[1:]:\n", " cur.next = ListNode(val)\n", " cur = cur.next\n", "\n", " def __repr__(self):\n", " return str(self.head)\n", "\n", "print(List([1, 2, 3]).head)\n", "print(List([1, 2, 3]))" ] }, { "attachments": { "e139b504-58e5-41ac-98d5-2722c307ef73.jpg": { "image/jpeg": "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NFsUqOW1FqwXrrL3PER3jfXy/sQO7/xw8+z2d0HotxW6m4WK/N0B240FPmes15BhjpIiJKLG4j2dXXGQctiawHqEbu7j08jgtDvebZ9v9q286d/4b/Skl9yW8VUl4yjIJ2/v7xdJj1TTvJ5PTyeGNJ7NHfklxPaaI7fdKdvWNyY1phjLKBtXJ5+4V87zPXXGb3y1FQ/l8juSTwT0jk9IaOy0ZAREQEREBERAREQEREBERB+VVS01bTS0VbTxVFPUMdFLFKwPZIxw4c1zT2IIJBB9qie2XW/+TszSfHcgpa257bMnuL6i03SCJ88uC1k7+X01Q0cuNE95Ja//AEk+9xPXbq41xttuvFBUWq7UFPW0VZE6CopqmJssU0bhw5j2OBDmkEggjgoPxsV+smUWejyHG7vR3S13CJs9JW0c7ZoJ43ex7HtJa4H8wVz1JlfsvzjSO71WT7L9Y6jT5lXKaiqwu9xOuWNVMhJLiyNxMlISTyXRcngAANHZfrHrzvnwkfg9QtmduysM7OuuE5fAIZD/AMtJUjzwH9Sgq5FKjt1e6O7D8NiewLNJKt3ZpvGT2+3QNP5l7ursuFV6a779e2Gi1R1PxzRbFKjltRasF66y9zxEd4318v7EDu/8cPPs9ndB6LcVupuFivzdAduNBT5nrNeQYY6SIiSixuI9nV1xkHLYmsB6hG7u49PI4LQ73m2fb/atvOnf+G/0pJfclvFVJeMoyCdv7+8XSY9U07yeT08nhjSezR35JcT2miO33Snb1jcmNaYYyygbVyefuFfO8z11xm98tRUP5fI7kk8E9I5PSGjstGQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBEXn87z7C9MMVrs21AyWhsNjtsfnKmtrJQyNg9wHvc4n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" } }, "cell_type": "markdown", "id": "75e01731-7300-453b-a61e-7053e6dcab1a", "metadata": {}, "source": [ "## [2. Add Two Numbers](https://leetcode.com/problems/add-two-numbers/description/)\n", "\n", "Medium\n", "\n", "You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.\n", "\n", "You may assume the two numbers do not contain any leading zero, except the number 0 itself.\n", "\n", "![addtwonumber1.jpg](attachment:e139b504-58e5-41ac-98d5-2722c307ef73.jpg)\n", "\n", "Example 1:\n", "\n", " Input: l1 = [2,4,3], l2 = [5,6,4]\n", " Output: [7,0,8]\n", " Explanation: 342 + 465 = 807.\n", "\n", "Constraints:\n", "\n", " The number of nodes in each linked list is in the range [1, 100].\n", " 0 <= Node.val <= 9\n", " It is guaranteed that the list represents a number that does not have leading zeros." ] }, { "cell_type": "code", "execution_count": 6, "id": "87985f3f-84e0-4faa-902f-5bfbd9286fbb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[7, 0, 8]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def addTwoNumbers(l1, l2):\n", " dummy = cur = ListNode()\n", " carry = 0\n", "\n", " while l1 or l2 or carry:\n", " cur.next = ListNode()\n", " cur = cur.next\n", "\n", " carry += (l1.val if l1 else 0) + (l2.val if l2 else 0)\n", " carry, cur.val = divmod(carry, 10)\n", "\n", " l1 = l1.next if l1 else None\n", " l2 = l2.next if l2 else None\n", "\n", " return dummy.next\n", "\n", "l1 = List([2, 4, 3]).head\n", "l2 = List([5, 6, 4]).head\n", "addTwoNumbers(l1, l2)" ] }, { "attachments": { "5d1ae967-ebcf-47b8-89f4-32d324b3fe3c.png": { "image/png": "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" } }, "cell_type": "markdown", "id": "19569c07-c4fc-4da0-a30b-89a23ee4434d", "metadata": {}, "source": [ "## [24. Swap Nodes in Pairs](https://leetcode.com/problems/swap-nodes-in-pairs/)\n", "\n", "Medium\n", "\n", "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.)\n", "\n", "Example 1:\n", "\n", "![image.png](attachment:5d1ae967-ebcf-47b8-89f4-32d324b3fe3c.png)!\n", "\n", " Input: head = [1,2,3,4]\n", " Output: [2,1,4,3]\n", " Example 2:\n", "\n", "Constraints:\n", "\n", " The number of nodes in the list is in the range [0, 100].\n", " 0 <= Node.val <= 100" ] }, { "cell_type": "code", "execution_count": 7, "id": "9660c061-b76b-48a5-bd90-467ff9d71c16", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2, 1, 4, 3]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 前兩個交換,剩下遞迴\n", "\n", "def swapPairs(head):\n", " if head is None or head.next is None:\n", " return head\n", " else:\n", " res = head.next\n", " head.next = swapPairs(head.next.next)\n", " res.next = head\n", " return res\n", "\n", "lst = List([1, 2, 3, 4]).head\n", "swapPairs(lst)" ] }, { "attachments": { "ac027f18-9483-4e10-b453-ca589fc5df4a.png": { "image/png": "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" } }, "cell_type": "markdown", "id": "36640f94-8907-49fe-864b-27091c1b3717", "metadata": {}, "source": [ "## [206. Reverse Linked List](https://leetcode.com/problems/reverse-linked-list/)\n", "\n", "Easy\n", "\n", "Given the head of a singly linked list, reverse the list, and return the reversed list.\n", "\n", "Example 1:\n", "\n", "![image206.png](attachment:ac027f18-9483-4e10-b453-ca589fc5df4a.png)\n", "\n", " Input: head = [1,2,3,4,5]\n", " Output: [5,4,3,2,1]\n", "\n", "Constraints:\n", "\n", " The number of nodes in the list is the range [0, 5000].\n", " -5000 <= Node.val <= 5000\n" ] }, { "cell_type": "code", "execution_count": 8, "id": "f5dda745-c282-4fb7-ae49-c402d1797837", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[5, 4, 3, 2, 1]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Hannah's solution:不改指標而是倒著長一個新的 list\n", "# 實測比改指標用到更多 memory\n", "\n", "def reverseList(head):\n", " res = None\n", " while head:\n", " res = ListNode(val=head.val, next=res)\n", " head = head.next\n", " return res\n", "\n", "lst = List([1, 2, 3, 4, 5])\n", "reverseList(lst.head)" ] }, { "cell_type": "code", "execution_count": 2, "id": "161b1b41-7445-4548-8a48-21429635e6bd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[5, 4, 3, 2, 1]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 改指標;迴圈裡用 tmp 寫比較直觀 readable\n", "# 雖然也可以用 tuple unpacking 寫成 cur.next, prev, cur = prev, cur, cur.next\n", "\n", "def reverseList(head):\n", " prev = None\n", " cur = head\n", " while cur:\n", " tmp = cur.next\n", " cur.next = prev\n", " prev = cur\n", " cur = tmp\n", " \n", " return prev\n", "\n", "lst = List([1, 2, 3, 4, 5])\n", "reverseList(lst.head)" ] }, { "cell_type": "code", "execution_count": 11, "id": "d7186b23-3299-44f0-b65f-9a9ccb421fba", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[5, 4, 3, 2, 1]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# recursive solution from the repo\n", "# 遞迴呼叫完成時的狀態是 1 -> 2 <- 3 <- 4 <- 5,head 是 1\n", "\n", "def reverseList(head):\n", " if head is None or head.next is None:\n", " return head\n", "\n", " reverse = reverseList(head.next)\n", " head.next.next = head\n", " head.next = None\n", " \n", " return reverse\n", "\n", "lst = List([1, 2, 3, 4, 5])\n", "reverseList(lst.head)" ] }, { "attachments": { "d3e59491-4d86-46b7-a42d-4b00a71acefd.png": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhMAAACrCAIAAABTx4lCAAAgAElEQVR4Ae2de1xT9f/HP9wGoiC5NMVIRZ0CHp3uqzisCBGpDE+BX0DBmpoYIbUmM02/oOkSUawA5avLGyJdzEs645uXLl4KnAiCmRIlrjQMwa/TrB4S56ff+ZtrN862c2N780d9zue8P+/P+/N8HXi5s3NBBM0/J06cUCqVMpkMx3GRSBQUFOTn5+fh4YEQ8vDw8PPzCwoKEolEOI7LZDKlUnnixAmaK4L0xgRAI2MibGyDCmxQt2dOUIogCGQPuY7GVFVVKRSK6OhoHo8nFAolEkleXt6uXbvUarVGo9FqtW1tbQRBtLW1abVajUajVqt37dqVl5cnkUiEQiGPx4uOjlYoFFVVVR1NBfvtJAAa2QmO0mGgAqU4aUwGShnBpdI56uvrc3JyQkJCBAKBVCpVqVRardZoPjKbWq1WpVJJpVKBQBASEpKTk3MnM5mBENMhAdCoQ0QMBIAKDECmZApQyhJGapyjvLwcx3E+ny+VSisqKixNZkd/RUWFVCrl8/k4jpeXl9uRAYboCIBGXDgSQAUuqECmBlDKOiVHnUOlUkVGRgqFwg0bNlifycG9GzZsEAqFkZGRKpXKwVSuNhw04oLioAIXVCBTAyhFhpL9zlFTU4PjOIZhpaWlZGaiJKa0tBTDMBzHa2pqKEno3ElAIy7oCypwQQUyNYBSZCjpYux0juzsbF9f3/z8fPIzURiZn5/v6+ubnZ1NYU7nSwUacUFTUIELKpCpAZQiQ0kfY7NzVFVVicXipKQkjUajz8J8Q6PRJCUlicViuP7KFD5oZMqE+R5QgXnm9s0IStnBzTbnUCqVCKHi4mI7ZqJjSHFxMUJIqVTSkbyT5gSNuCAcqMAFFcjUAEqRoWQaY4NzyOVyDMPUarVpFhZ71Go1hmFyuZzFGrgzNWjEBS1ABS6oQKYGUIoMJbMxZJ0jNTU1Li7OvvszzE5MYadWq42Li0tNTaUwZ2dMBRpxQTVQgQsqkKkBlCJDyVIMKefAcVwikVhKwZF+iUSC4zhHimG+DNCIeeamM4IKpky42QNKOahLx86B4/icOXMcnIaZ4XPmzHFN8wCNmDnArM8CKljnw529oJTjWnTgHKmpqdz/tGFIQSKRuNppK9DI8ABgqw0qsEXe1nlBKVuJmY235hxyuTwuLs7sMC53xsXFuc4X5qARFw5FUIELKpCpAZQiQ4lMjEXnUCqVGIZx8ytx6wvTarUYhrnCpbqgkfUjgZm9oAIznB2fBZRynKE+g3nnqKqqQghx7QJcfdEdNtRqNULIuW8SBI06PAwYCAAVGIBMyRSgFCUY9UnMO4dYLObO7X76Wm1qFBcXi8Vim4Z0rmDQiAt6gQpcUIFMDaAUGUrkY8w4R3Z2dlJSEvkUnI1MSkpy1mdbgUZcOOpABS6oQKYGUIoMJZtijJ2jpqbG19eX3WdS2bQAK8EajcbX19f5nqoLGlkRnbFdoAJjqB2cCJRyEKDZ4cbOgeM4W0/ANVufg535+fnOd4cHaOTgUUHJcFCBEowMJAGl6ID8N+dQqVQYhtExDYs5MQxzppdBgUYsHkv6qUEFPQqON0ApmgT6m3NERkYy+ZommpZklLa0tDQyMtKos/NugkZc0A5U4IIKZGoApchQsiPmvnOUl5cLhUI7UnB/iFAodI53mINGXDjYQAUuqECmBlCKDCX7Yu47B47jdL9L3L4SHR+1YcMG5/i2AzRy/GBwPAOo4DhDZjKAUvRxvucc9fX1fD6fvmlYz8zn8+vr61kvw5ECQCNH6FE1FlSgiiTdeUApWgnfc46cnBypVErrTOwmv7O6nJwcdmtwcHbQyEGAlAwHFSjByEASUIpWyPecIyQkpKKigtaZ2E1eUVEREhLCbg0Ozg4aOQiQkuGgAiUYGUgCStEK+a5zVFVVCQQCWqfhQnKBQNB5n2QFGnHhEAIVuKACmRpAKTKUHIm56xwKhcK5T1XpAEmlUoVC4QgsFseCRizC108NKuhRcLwBStEt0F3niI6OZuZeufPnz8+ePXvAgAE8Hs/X1zcsLEwul//66690L1KXX6VSRUdHMzMX5bMwplFLS8uCBQtCQ0N9fHy6dOkydOhQmUx25coVyldkNiHHNWJMhVu3bi1btgzDsK5du/r5+Y0ePbqwsPCvv/4yC43yTo6rQGa9jCllqZiWlpbevXsjhDIyMizFON7PolJ3nYPH4zHwHo69e/d6e3sjhPz8/EQi0ZAhQzw9PRFCvXv3Pn/+vOMQO8yg1Wp5PF6HYdwMYEaj7777rm/fvgghHo+HYVhoaKheo4aGBgbIcFwjZlS4fv368OHDEUI+Pj4RERHh4eE6FZ555pm2tjZQgQwBZpSyUklKSgr63w+tzsHi7ws6ceIEAzcAXr161d/fHyGUmZl58+ZNHfH6+vqwsDCEUExMjBUNKNwlFApPnDhBYUJmUjGj0V9//YVhGELoiSee+Pnnn3VL+/7773UaPf3008wslrMaMaMCQRCzZs1CCEVEROg/6v3www+DBg1CCK1Zs8bFVSCzfMaUslTMJ598ghDq2bMn3Z85CIJg6/cFKZVKBt40vn79eoQQhmHt7e2GuD/77DOEkLu7+59//mnYT1NbIpF0xncFMqPRF198gRDy9vZubm425H/o0CGEkKen561btwz7aWpzViNmVGhqavL09PTw8GhsbDQkrFMhMDDQ6DfIMIbCNmdVILNGZpSyVElra2ufPn169OixdOlSBpyDLaWQTCbLy8uzRIGq/p9++ungwYOmlzZduHBB95lO/0GEqhnN5snLy5PJZGZ3cbmTGY3OnDmzfPly03/VXr16VacRM8/e56xGzKiwadMmhFBUVJTpAdmnTx+EUGVlpekuyns4qwKZlTKjlKVKUlNTEUKlpaWFhYUMOAdbSiEcx3ft2mWJAt39ZWVlCKHBgwfTPZEu/65duzrjY0jY1ejcuXMIIS8vr99//50BmTirETMqzJ07FyH0+uuvm6KOi4tDCK1bt850F+U9nFWBzEqZUcpsJXv37kUITZ48mSAIZpyDLaWQSCRi5X3jbW1tO3bs6NGjh4eHx+7du83KQHmnWq0WiUSUp6Uq4ezZs81eqsCWRrp1vf766wihhIQEqpZpPQ/rGrGrwlNPPXXnFPnatWtNKWVkZCCE5s2bZ7qL8h7WVSCzInaVMq1Qf57ql19+Ycw52FIKBQUFMXMWQg96/Pjx/fv35/F4Xl5eTz755JEjR/S76G5oNJqgoCC6Z7E7v4+Pj5eX14IFC4z8g3mN9Ev48ssvvby8fH19mbn+jSAI1jViV4WIiAjduQ69BPrGG2+8gRCaNWuWvoe+BusqkFkau0qZVqg7T7Vt2zbdLmY+c7Cl1N1rZI3+TpkSobanX79+uvPmXbp0iYmJ2b59O7X5rWTTarV+fn5WAtjd9c477/j4+PB4PG9vb0P/YF4jHYfPPvvMz8/P3d39o48+YowM6xqxq8KoUaMQQmaB675xTUlJYUAL1lUgs0Z2lTKqcN++fQihuLg4fT8zzsGWUsjDw4OZi8T1QAmC+PPPPxsaGtauXau7eyAtLc1wL33ttrY2Dw8P+vI7nrlHjx46WzX0D1Y0UiqVnp6eXl5eZWVljq+LfAYuaMSiCh1+5njxxRfJw7Q7kgsqkCmeRaUMy2ttbQ0MDHzggQcuX76s72fGOdhS6u6fKf1SmW9cvHixa9euCKGjR48yM7vu73Jn+a/uTBHDGrW3t8vlcoRQ9+7dDx06xIwuhrNwTR0mVXj66acRQkVFRYZAdO309HSEkFwuN91FRw/XVCBTD91KzZo1q+/ff86dO0cQxPTp0+9c6WN0+oQZ5yAIAiE0fvz43NzcmpoaOo4EsznZ+cxhWMozzzxz55aON99807CTpjZb/kx+Oaz/G6q9vV0ikSCEBgwY8N1335GvnKpILmjEogqvvvqqpa/BY2NjEULMvH6NCyqQOaIYVgrHcSMDq6urO3v2LELI19c34e8/QqEQITRw4MCEhAT6TqvolFKpVJmZmQMHDgwNDV20aFF1dTUZeo7EMPQ9x5IlSyZMmFBSUmJaa0xMDEIoOzvbdBflPWydEyS5kHfeeadLly6G56l0A5n8nuO1115DCI0cOVJ/AzPJ4qkKY10jdlUoLS1FCI0bN86I5+3btx944AGE0OnTp4120bHJugpkFsWuUvoK1Wq1kZ2Ybvbt21cfT23DSKmKior58+cPGDBg7Nixa9eupe8+OYaurdJdpT5u3DijO2C1Wu2DDz5o6WISahFz4bod6yti/VqRjRs3IoSGDBnS0tJivVT69rJ1rYh+Reyq0NLS4u3t7ebmpjsNoq/qww8/ZPLOJ9ZV0C/cSoNdpawUptvFzNkqS0p9+umnycnJvr6+UqmUjgsjGbqf4879ybqntr366qt6G7xy5Yru098DDzxw7dq1DpVwPICta59JVs7u9em6Z4u5u7szebbUlAzrGrGrAkEQuhNWo0aNunTpko5PdXW17sGrW7duNSVGRw/rKpBZFOtKWS+SGeewrtTFixcXLlzo7+8/c+bMb7/91nrBNu1l7h7y9evXe3h4IIS6desmFArDwsJ0j8718fHZt2+fTUXbHczW/ZZ2F6wbyMw9sQqFQvd8VpGFnz179ji4EDLDOasRMyoQBPHbb7+NHTtW98Ti8PDwkSNHurm5MXYnh04jzqpA5hBiTCnrxTDjHGSUunnz5ptvvunn55eZmUnVWy0Yem6VDvGpU6deeOEF3W2A3t7egwYNSktLM/pUbl0MB/ey9YwXB8tm5jk88+bNMz0/a9jDzMMiOasRMyroDpU///xzxYoVw4YN69Kli7+//7hx4/T3lzl4LJEczlkVyNTPpFJW6mHGOcgr1draKpPJ/P39CwoKrJRNchdDz8olWQ3dYWw9V9LBdbH77E8Hi7d1OGc1AhVslZKteFDKCvmqqqqJEyfGxMScOXPGSliHuxh6P0eHdTATwNaz7B1cHevvG3CwfpuGc1YjUMEmHVkMBqU6hL9mzRpPT09HrvBm7p2AHS6G7gAW35/l+NJYf8eZ40sgk4HjGoEKZETkQgwo1aEKarV61KhRdr+ykNH3kHe4GFoDWHxnr+PrYv29yo4vgUwGjmsEKpARkQsxoBQZFW7fvp2SkvL000/b8ejCu86hUCikUimZmTp1jFQqVSgUnXQJoBEXhAMVuKACmRpAKTKUdDHz588fM2aM/hJwkgPvOkdVVZVAICA5oPOGCQQC05cSdpblgEZcUApU4IIKZGoApchQ0scsX758xIgRho9r1O+y1LjrHARBhISEVFRUWApygv6KioqQkJBOvRDQiAvygQpcUIFMDaAUGUr6mGXLloWHh+tv09b3W2rcc46cnBznPmF1Z3U5OTmWKHSKftCICzKBClxQgUwNoBQZSoYxWVlZhu8XMdxl2r7nHPX19Xw+33S30/Tw+fz6+vpOvRzQiAvygQpcUIFMDaAUGUpGMYmJiTKZzKjT7OY95yAIAsdxRy7vNZudI50bNmzAcZwjxThSBmjkCD2qxoIKVJGkOw8oZSvhmzdvhoSEGL1oxGyS+85RXl4uFArNBnX2TqFQWF5e3tlXQRAEaMQFEUEFLqhApgZQigwlo5gvvviCz+d3+G35fecgCCIyMrK0tNQoUWffLC0tjYyM7Oyr0NcPGulRsNgAFViEb9PUoJRNuHTBixYtSk1NtT7wb86hUqkwDLM+oNPtxTBMpVJ1urItFQwaWSLDZD+owCRtR+YCpeyjN3ToUOt/Nv/mHLpvO/Lz8+2bjIOj8vPzneMbDkO2OI6DRoZAWGmDCqxgt2NSUMoOaB988MHYsWOtDDR2jpqaGl9fX41GY2VMZ9ml0Wh8fX3ZfU8RHaxAIzqo2poTVLCVGFvxoJR95CMjI8vKyiyNNXYOgiCys7OTkpIsDehE/UlJScy83px5JqAR88xNZwQVTJlwsweUskOX3bt3W/nYYcY5CIIQi8XFxcV2TMadIcXFxWKxmDv1UF4JaEQ5UjsSggp2QGNlCChlB3ahUHjgwAGzA807R1VVFUJIrVabHcP9TrVajRDqvE+pIkMYNCJDie4YUIFuwlTlB6XsIFlQUJCSkmJ2oHnnIAhCqVRiGGbH03fNTsNkp1arxTCMmVefMrku07lAI1MmzPeACswzt29GUMpWbq2trW5ubtevXzcdaNE5CIKQy+XkH2Nimpqtnri4OLlcztbsDM8LGjEM3Ox0oIJZLBzsBKVsFSUhIWHLli2mo6w5B0EQqampEonEdBhneyQSSYf3sHC2ePsKA43s40btKFCBWp70ZQOlbGK7ZcuWKVOmmA7pwDl0d3jMmTPHdCQHe+bMmeN8d2+Q4YzjOGhEBhStMaACrXgpTA5KkYfZ1NTk7+9vGt+xc+jMg/ufPCQSiWvahk5UHMdBI9Pjm+EeUIFh4HZPB0qRRycSiY4fP24UT8o5dKet4uLiuPmFuVarjYuLc7WTVEZCgkamQFjpSU1Nhd8UVsjbOikoRZJYZmbm6tWrjYLJOofuC3MMw7h2qa5arcYwzHW+EjfSz2hTLpeDRkZMmN8EFZhnbt+MoBQZbiUlJcnJyUaRNjiH7lJdhBB3bhIsLi5GCLnCBbhGslnZVCqVoJEVPszsAhWY4ez4LKBUhwxra2tDQ0ONwmxzDoIgqqqqxGJxUlISu8+20mg0SUlJYrHYuW/3M1KL5CZoRBIUrWGgAq14KUwOSlmH2dbW5ubm1tbWZhhms3PoBmdnZ/v6+rL1xNb8/HxfX19nfSaVoTyOtEEjR+hRNRZUoIok3XlAKSuEBw4ceP78ecMAO52DIIiamhocxzEMY/JlUKWlpRiG4TjufE/ANVSFqjZoRBVJR/KACo7QY3IsKGWJ9vjx4w8dOmS4137n0GVRqVSRkZFCoZDud5hv2LBBKBRGRkZaf9+I4dqgDRpx5xiA3xTuaGG9ElDKlE9KSsq2bdsM+x11Dl2u8vJyHMf5fL5UKq2oqDCcwMF2RUWFVCrl8/k4jjvHu8QdBGL3cNDIbnQUDgQVKIRJaypQyhCvVCpds2aNYQ81zqHLWF9fn5OTExISIhAIpFKpSqWy7/4PrVarUqmkUqlAIAgJCcnJybmT2bBoaNtNADSyGx2FA0EFCmHSmgqU0uFdsmRJTk6OIWoqnUOft6qqSqFQREdH83g8oVAokUjy8vJ27dqlVqs1Go1Wq9V9Td/W1qbVajUajVqt3rVrV15enkQiEQqFPB4vOjpaoVDAdVN6pJQ3QCPKkdqREFSwAxorQ1xcqVWrVmVlZRmSp8U5DCc4ceKEUqmUyWQ4jotEoqCgID8/Pw8PD4SQh4eHn59fUFCQSCTCcVwmkymVyhMnThgOhzYDBEAjBiB3OAWo0CEijgS4oFIFBQWZmZmG/Gl3DsPJoN2JCMydO7d///6dqGAoFQgAAZoIrF27NiMjwzA5OIchDWjfI1BeXu7p6ent7Q1EgAAQAAKFhYVz58415ADOYUgD2ncJ1NXVde3aFSHUvXv32tpagAIEgICLE8jPz5fJZIYQwDkMaUCbuHbtWr9+/dD/frp160b3bTpAHAgAAe4TWL58+aJFiwzrBOcwpAFt4tFHH/Xx8dE5B0IoMTERoAABIODiBObPn5+bm2sIAZzDkIart5OTkz09PRFCAQEB3t7eCKFHHnnE1aHA+oGAyxOYPXv2+vXrDTGAcxjScOl2RUWFu7u7SCRatGhRWFiYQCDg8XheXl4tLS0uzQUWDwRcnsBzzz23c+dOQwzgHIY0oH2PgJ+fX0tLS2pqqo+Pz/vvvw9cgAAQcGUCYrH42LFjhgTAOQxpQPsuge+//15/J4dYLIZ7M+GwAAIuTuCRRx758ccfDSGAcxjSgPZdAp9++mlsbCywAAJAAAgQBPHXX38hhKh5sxMAdWICxcXFaWlpTrxAWBoQAALkCTQ0NAwYMMAoHj5zGAGBTWLp0qXwvkU4DoAAENAR+M9//jNhwgQjGuAcRkBgk5DJZGy9JxjoAwEgwDUCBQUFL7/8slFV4BxGQGCTePnll9euXQsggAAQAAIEQbz00kuFhYVGKMA5jIDAJpGRkVFUVAQggAAQAAIEcfe5Ep9//rkRCnAOIyCwSWRlZa1atQpAAAEgAAQIgvD39ze9HRicA44NYwIKhWLhwoXGvbANBICA6xE4e/bsoEGDTNcNzmHKxNV7Nm3a9MILL7g6BVg/EAACBLF169bk5GRTEuAcpkxcveeLL7547LHHXJ0CrB8IAAGCSE9Pf/vtt01JgHOYMnH1nqamph49erg6BVg/EAACBDF8+PDKykpTEuAcpkygh+jfv//58+cBBBAAAq5MoKmpqXv37mYJgHOYxeLqndOmTdu4caOrU4D1AwHXJlBWVvbss8+aZQDOYRaLq3e+9957U6dOdXUKsH4g4NoEZs6caenWLnAO1z40LKz+8uXLfn5+FnZCNxAAAi5BIDAwsL6+3uxSwTnMYoFOIiYm5qOPPgIQQAAIuCaBo0ePjhw50tLawTkskXH1/s2bN0+ePNnVKcD6gYCrEsjKyrLyzGxwDlc9Lkisu2fPnt9++y2JQAgBAkDA2QgEBwdXV1dbWhU4hyUy0E9kZ2enp6cDCCAABFyNwKFDh0QikZVVg3NYgePqu65evdqlSxdLX5G5Oh1YPxBwXgKzZs1avXq1lfWBc1iBA7uIJUuWSCQSAAEEgIDrELhx4waPx/vll1+sLBmcwwoc2EXcvn27X79+hw4dAhZAAAi4CIF333132rRp1hcLzmGdD+wltm3bNnr0aAABBICAixDAMOzw4cPWFwvOYZ0P7L1LIDEx8V//+hewAAJAwOkJ7Ny5c9y4cR0uE5yjQ0QQQFy6dKlnz54HDhwAFkAACDg3gaioqLKysg7XCM7RISIIuEvgo48+Cg4Ovnr1KuAAAkDAWQns379/xIgRZFYHzkGGEsTcJfDGG2/ExcUBCyAABJyVQFRUVElJCZnVgXOQoQQx9whMmTLl1VdfBRxAAAg4H4EPP/wwPDyc5LrAOUiCgrC7BP7444+xY8e+9dZbgAMIAAEnI4Bh2N69e0kuCpyDJCgIu0fg4sWLAoFg7dq1QAQIAAGnIZCbm5uQkEB+OeAc5FlB5D0CdXV1Dz/88IYNG4AIEAACTkCgoaHB09Pz7Nmz5NcCzkGeFUTeJ3Dq1Km+ffsWFxff74IWEAACnZNAQkLC8uXLbaodnMMmXBB8n8Dp06eDg4OtPxbtfjS0gAAQ4CSB9evXR0RE2FoaOIetxCD+PoGGhoaRI0cuXLjwfhe0gAAQ6DwEzp075+PjU1lZaWvJ4By2EoP4vxFobW2NjY194YUX/tYLG0AACHQGAlFRUfadNgDn6Azycr7GF1988fHHH29sbOR8pVAgEAAC9wjIZLLk5GT7cIBz2McNRhkTWLFiRe/evffv32+8A7aBABDgHgGlUhkWFnbjxg37SgPnsI8bjDJDYM+ePT179lQoFGb2QRcQAAKcIXDw4EEfH5+TJ0/aXRE4h93oYKAZAhcuXHjyySdxHL906ZKZ3dAFBIAA2wRqa2v5fP7OnTsdKQScwxF6MNY8gSVLljz44INkntVsfjz0AgEgQA+BxsZGgUCwbt06B9ODczgIEIabJ3D48GEMw2bNmnX9+nXzEdALBIAAswQuX74sFApXrlzp+LTgHI4zhAzmCbS3t7/22mt9+/aFDx/mAUEvEGCQgEajGTly5LJlyyiZE5yDEoyQxCKBAwcOjBw5Mikp6cKFCxaDYAcQAAJ0Evjuu+9CQkIofMo1OAedckHu/yewdOlSLy8vSj4m/39K+D8QAAKkCBw9ejQwMLCgoIBUNLkgcA5ynCDKYQJnzpyJj48XCoWffPKJw8kgARAAAqQIlJWVubu7b9++nVQ06SBwDtKoIJAKAjt27Bg2bFh8fHxNTQ0V+SAHEAACFgksXbq0X79+X331lcUIe3eAc9hLDsY5QGD16tUBAQEZGRlw24cDFGEoELBIoKWlZcqUKbGxsTT9ioFzWEQPO2gl0NraKpfLPTw8Fi1aZPcjEGitEJIDgU5KQKVS9evXb8GCBfTVD85BH1vI3DGBhoaGtLS07t27L1++/I8//uh4AEQAASBglcC8efOCgoL27NljNcrRneAcjhKE8Y4TqKurk0gkfD5foVDcunXL8YSQAQi4IAGVShUaGjpjxoxr167RvXxwDroJQ36yBGpqaiQSSffu3bOzs1taWsgOgzgg4PIENBqNRCIZPHjwxx9/zAwMcA5mOMMsZAl8++23L730kpeX12uvvfbDDz+QHQZxQMAlCbS3t7/55pteXl6LFy9ub29njAE4B2OoYSIbCFy8eHH+/PndunWbPn36N998Y8NICAUCLkOgqKgoKCho+vTp58+fZ3jR4BwMA4fpbCBw48aNVatWDRw4cMKECTt27LBhJIQCAacmUFRUNGjQIBzHjx07xspCwTlYwQ6T2kZg+/btTzzxxODBg1euXAlfgdjGDqKdiMCvv/66bNmywMDA+Ph4Ou7vI48KnIM8K4hkmcDx48dnzpyJEJo5c+aRI0dYrgamBwIMEvj6669ffPFFhFBaWtqpU6cYnNn8VOAc5rlAL2cJNDc35+XlhYaGjhkzpqioSKvVcrZUKAwIOEhAq9WuW7du7NixQ4YMWbFixZUrVxxMSNVwcA6qSEIepgmUl5dPnTrV09NzxowZhw4dYnp6mA8I0Elg3759KSkpbm5uU6dOValUdE5lT25wDnuowRjuELhy5Up+fv6oUaOGDh26dOnS+vp67tQGlQABWwkcPnw4IyPjoYceevzxx4uKipqbm23NwEw8OAcznGEW2gl88803r7zySq9evaKiooqLi+GLdNqJwwTUESgvL09PT+/bt+/o0aPfeuutc+fOUZeblkzgHLRghaQsEti9e7fuLNazzz67bc8oa9AAAAcnSURBVNu23377jcViYGogYIlAc3NzSUnJ1KlT/f39H3vssZUrV549e9ZSMNf6wTm4pgjUQw2B3377bevWrZMnT/b09PznP/+5ffv2mzdvUpMasgABBwgcO3ZsyZIlERER3bp1S0hIUCqVP/30kwP52BkKzsEOd5iVMQKtra0bN26cPHmym5sbjuPvvfdeU1MTY7PDRECAIIjTp0+/++67zz77bPfu3UUi0fz58w8cONCpyYBzdGr5oHgbCFy/fr20tDQpKalbt26RkZErV66sra21YTyEAgFbCKjV6rfffjshIaFXr15Dhw5NS0srKyu7fPmyLTm4GwvOwV1toDL6COzfvz8jIyM4OFggEGRmZu7btw/eDkIfbRfJ3NzcrFKpFi9ePGHChK5du44YMSI9Pb20tLSxsdH5CIBzOJ+msCIbCFRXV+fm5kZHR7u7u0+cOHHlypUnT560YTyEujCBmzdvfvXVV2vWrJk2bdrgwYMDAgImTpy4ePFilUp19epV5wYDzuHc+sLqyBK4cePGnj17MjMzw8LCevXqlZiYuG7dujNnzpAdD3EuQODKlSsHDhzIy8ubNm1aaGioj49PRETE3LlzN2/eXFdX5wIA7i8RnOM+C2gBAR2BxsbGLVu2zJgxY+DAgYGBgYmJiQUFBVVVVcDHpQjcunVLrVZv3rx53rx5sbGxgYGBDz744Pjx46VS6ZYtW6qrq12KhtFiwTmMgMAmEPgbgR9//HHr1q1paWnDhg3z9/ePjY3Nzs6+8zUJZ2/u/Vv1sEGaQHNz87Fjx957772srKxJkyYFBwf7+PiMGjVq+vTpubm5+/btc8qvK0jjMQ4E5zAmAttAwBKB5ubmvXv3Llq0aMKECf7+/kOGDElJSVmzZs1XX30FD160BI2D/a2trWq1+v3331+2bNnzzz8vFov5//sRi8USiSQ3N3fPnj3cv4ubXbDgHOzyh9k7MYG6urrNmzfPnTtXLBb7+PiEhIQkJyevWLFi//79Go2mEy/MWUr/448/zp8//9lnn/373/9esGBBYmLi6NGj+Xx+QECASCRKTEx84403Nm3adOTIkV9++cVZFs3QOsA5GAIN0zg9gdra2pKSkqysrIkTJ/bp04fP5z/++OPp6emFhYUHDx7sjPcJdxbJLl26VFlZ+fHHH7/99tsymWzKlCnh4eG9e/f29vYWCAQxMTGzZ89WKBRlZWXffPMN3AdKiazgHJRghCRAwJhAU1PT4cOHCwsL09PTo6Ki+vTp4+/v/49//GPatGnZ2dklJSXHjx+Hf+oaU7Ow3dTUVFNTU15evmnTJoVCkZGR8dxzz4WHhz/88MNubm6BgYFjxoyJj49/5ZVXVq1a9cEHH9x5D9LPP/9sIRl0U0AAnIMCiJACCJAh0NraWlFRsW3btuzs7JSUlLFjx/bq1atr167Dhg2bNGnSyy+/nJubu3379iNHjvz444+uc2eiVqv94YcfKisrVSrVpk2bVq5cOW/evOnTp0+cOHHEiBG9e/d2c3N76KGHRowYERsbK5FIFi5cWFBQ8PHHH3/99deNjY23b98mAx9iqCUAzkEtT8gGBGwjcP369dOnT+/du7ewsFAulycnJz/66KP9+/f38vLq2bPn8OHDJ06c+Pzzz8vl8lWrVm3dunX//v2VlZUNDQ3Xrl2zbSZmo//73/82NjZWV1d//vnnO3fuVCqVeXl5CxYsmD17dkJCwhNPPIFhWGBgII/H8/f3Dw4ODg8PnzRpkkQimT9/vm6l5eXlp06d+vnnn8EbmJWO1GzgHKQwQRAQYJ7AlStXdKdotmzZovuX+PPPP//UU0+NHj06ODg4ICDA3d2dz+cPHDhQJBJFRUXhOD59+vT09HS5XL5kyZJVq1YVFRVt3LixrKxs586dKpXq4MGDX3755fHjxysrK6uqqmpqampra8+cOfPt/37OnDlTV1dXW1tbXV198uTJysrK48ePf/nllwcOHFCpVDt37iwrK9u0adO6detWr169bNmyBQsWZGZmzpw5MzEx8amnnnr00UeHDx/er1+/gIAAhFBAQED//v2FQmFUVFR8fPysWbPkcvmKFSvWr1+/Y8eOzz//vKam5qeffvr999+ZBwszOk4AnMNxhpABCLBDoK2trbm5+fvvvz958uThw4d3795dUlKybt26vLy8nJycrKysjIyMGTNmTJ06NT4+ftKkSRMmTIiMjIyIiBgzZsyoUaNGjBiBYVhYWFjo/37CwsKGDRuGYZhQKBSJRGPGjImIiIiMjIyJiZk0aVJ8fPzUqVNnzJiRnp4uk8kWL168YsWKd999d+PGjR9++OGnn3569OjR06dPX7hwobW1tb29nR0iMCtTBMA5mCIN8wABIAAEnIUAOIezKAnrAAJAAAgwRQCcgynSMA8QAAJAwFkIgHM4i5KwDiAABIAAUwT+DxUCD71WSfCvAAAAAElFTkSuQmCC" } }, "cell_type": "markdown", "id": "d7cecd44-199e-4eb9-a33b-d89a65a5ba17", "metadata": {}, "source": [ "## [141. Linked List Cycle](https://leetcode.com/problems/linked-list-cycle/description/)\n", "\n", "Easy\n", "\n", "Given head, the head of a linked list, determine if the linked list has a cycle in it.\n", "\n", "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. Internally, pos is used to denote the index of the node that tail's next pointer is connected to. Note that pos is not passed as a parameter.\n", "\n", "Return true if there is a cycle in the linked list. Otherwise, return false.\n", "\n", "Example 1:\n", "\n", "![image.png](attachment:d3e59491-4d86-46b7-a42d-4b00a71acefd.png)\n", "\n", " Input: head = [3,2,0,-4], pos = 1\n", " Output: true\n", " Explanation: There is a cycle in the linked list, where the tail connects to the 1st node (0-indexed).\n", " \n", "Constraints:\n", "\n", " The number of the nodes in the list is in the range [0, 104].\n", " -105 <= Node.val <= 105\n", " pos is -1 or a valid index in the linked-list.\n", " \n", "Follow up: Can you solve it using O(1) (i.e. constant) memory?" ] }, { "cell_type": "code", "execution_count": 5, "id": "4245c2fd-fe91-4d8a-9e11-30c84ba1fd83", "metadata": {}, "outputs": [], "source": [ "def hasCycle(head):\n", " fast = slow = head\n", " while fast and fast.next:\n", " fast = fast.next.next\n", " slow = slow.next\n", " if fast == slow:\n", " return True\n", " \n", " return False" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" } }, "nbformat": 4, "nbformat_minor": 5 }