{"id":7399,"date":"2026-07-21T21:42:23","date_gmt":"2026-07-21T13:42:23","guid":{"rendered":"https:\/\/i007.cc\/wordpress\/?p=7399"},"modified":"2026-07-21T21:42:23","modified_gmt":"2026-07-21T13:42:23","slug":"%e9%93%be%e8%a1%a8%e6%a3%80%e6%b5%8b%e7%8e%af%e5%b9%b6%e6%89%be%e5%85%a5%e5%8f%a3%ef%bc%88linked-list-cycle-ii%ef%bc%89","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/7399","title":{"rendered":"\u94fe\u8868\u68c0\u6d4b\u73af\u5e76\u627e\u5165\u53e3\uff08Linked List Cycle II\uff09"},"content":{"rendered":"<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\">\u529b\u6263 141\uff08\u5224\u65ad\u6709\u73af\uff09+ 142\uff08\u627e\u5165\u53e3\uff09\uff0c\u7528\u4e00\u5957\u601d\u8def\u5168\u89e3\u51b3\u3002<\/p>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h4 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\" dir=\"auto\">\u89e3\u6cd5\uff1aFloyd \u5224\u5708\u7b97\u6cd5\uff08\u9f9f\u5154\u8d5b\u8dd1\uff09<\/h4>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\">\u7528\u5feb\u6162\u4e24\u4e2a\u6307\u9488\uff0c<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">slow<\/code> \u6bcf\u6b21\u8d70 1 \u6b65\uff0c<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">fast<\/code> \u6bcf\u6b21\u8d70 2 \u6b65\uff1a<\/p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\" dir=\"auto\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">\u65e0\u73af\uff1a<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">fast<\/code> \u5148\u5230 null<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">\u6709\u73af\uff1a<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">fast<\/code> \u548c <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">slow<\/code> \u4e00\u5b9a\u5728\u73af\u5185\u76f8\u9047<\/li>\n<\/ul>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"cpp code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"text-text-500 font-small p-3.5 pb-0\">cpp<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ListNode* detectCycle(ListNode* head) {\r\n    ListNode* slow = head;\r\n    ListNode* fast = head;\r\n\r\n    \/\/ \u7b2c\u4e00\u9636\u6bb5\uff1a\u5224\u65ad\u6709\u65e0\u73af\uff0c\u627e\u76f8\u9047\u70b9\r\n    while (fast != nullptr &amp;&amp; fast-&gt;next != nullptr) {\r\n        slow = slow-&gt;next;\r\n        fast = fast-&gt;next-&gt;next;\r\n        if (slow == fast) {\r\n            \/\/ \u7b2c\u4e8c\u9636\u6bb5\uff1a\u627e\u73af\u5165\u53e3\r\n            ListNode* finder = head;\r\n            while (finder != slow) {\r\n                finder = finder-&gt;next;\r\n                slow = slow-&gt;next;\r\n            }\r\n            return finder;  \/\/ \u76f8\u9047\u70b9\u5373\u4e3a\u73af\u5165\u53e3\r\n        }\r\n    }\r\n\r\n    return nullptr;  \/\/ \u65e0\u73af\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h4 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\" dir=\"auto\">\u4e3a\u4ec0\u4e48\u7b2c\u4e8c\u9636\u6bb5\u80fd\u627e\u5230\u5165\u53e3\uff1f\u6570\u5b66\u63a8\u5bfc<\/h4>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\">\u8bbe\uff1a<\/p>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"Code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">head \u5230\u73af\u5165\u53e3\u7684\u8ddd\u79bb = a\r\n\u73af\u5165\u53e3\u5230\u76f8\u9047\u70b9\u7684\u8ddd\u79bb = b\r\n\u76f8\u9047\u70b9\u5230\u73af\u5165\u53e3\u7684\u8ddd\u79bb = c\uff08\u5373\u73af\u957f - b\uff09<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"Code\">\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">head \u2500\u2500a\u2500\u2500&gt; [\u5165\u53e3] \u2500\u2500b\u2500\u2500&gt; [\u76f8\u9047\u70b9]\r\n                \u2514\u2500\u2500\u2500\u2500\u2500\u2500c\u2500\u2500\u2500\u2500\u2500\u2500\u2518\uff08\u7ed5\u56de\u5165\u53e3\uff09<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\"><strong>\u7b2c\u4e00\u9636\u6bb5<\/strong>\uff0c\u76f8\u9047\u65f6\uff1a<\/p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\" dir=\"auto\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">slow<\/code> \u8d70\u4e86\uff1a<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">a + b<\/code><\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">fast<\/code> \u8d70\u4e86\uff1a<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">a + b + n*(b+c)<\/code>\uff08\u5728\u73af\u91cc\u591a\u7ed5\u4e86 n \u5708\uff09<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">\u56e0\u4e3a fast \u901f\u5ea6\u662f slow \u7684 2 \u500d\uff1a<\/li>\n<\/ul>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"Code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">2(a + b) = a + b + n(b + c)\r\na + b = n(b + c)\r\na = n(b + c) - b\r\na = (n-1)(b + c) + c<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\">\u53d6 n=1 \u6700\u7b80\u60c5\u51b5\uff1a<code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">a = c<\/code><\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\"><strong>\u7ed3\u8bba\uff1a\u4ece head \u51fa\u53d1\u8d70 a \u6b65\uff0c\u4ece\u76f8\u9047\u70b9\u51fa\u53d1\u8d70 c \u6b65\uff0c\u4e24\u8005\u540c\u65f6\u5230\u8fbe\u73af\u5165\u53e3\u3002<\/strong><\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\">\u6240\u4ee5\u7b2c\u4e8c\u9636\u6bb5\u628a\u4e00\u4e2a\u6307\u9488\u91cd\u7f6e\u56de <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">head<\/code>\uff0c\u4e24\u4e2a\u6307\u9488\u540c\u901f\u524d\u8fdb\uff0c\u76f8\u9047\u70b9\u5c31\u662f\u73af\u5165\u53e3\u3002<\/p>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h4 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\" dir=\"auto\">\u53ef\u89c6\u5316\u8d70\u4e00\u904d<\/h4>\n<div class=\"relative group\/copy bg-bg-000\/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100\" tabindex=\"0\" role=\"group\" aria-label=\"Code\">\n<div class=\"sticky opacity-0 group-hover\/copy:opacity-100 group-focus-within\/copy:opacity-100 top-2 py-2 h-12 w-0 float-right\">\n<div class=\"absolute right-0 h-8 px-2 items-center inline-flex z-10\"><\/div>\n<\/div>\n<div class=\"overflow-x-auto\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\u94fe\u8868: 3 \u2192 1 \u2192 2 \u2192 0 \u2192 (-4)\r\n                \u2191___________\u2191  (\u22124 \u7684 next \u6307\u5411 1\uff0c\u5165\u53e3\u662f\u8282\u70b9 1)\r\n\r\na=1\uff08head\u2192\u5165\u53e3\uff09\uff0cb=3\uff08\u5165\u53e3\u2192\u76f8\u9047\u70b9\uff09\uff0cc=1\uff08\u76f8\u9047\u70b9\u2192\u5165\u53e3\uff09\r\n\u9a8c\u8bc1\uff1aa = c = 1 \u2713\r\n\r\n\u7b2c\u4e00\u9636\u6bb5\u76f8\u9047\u5728 (-4)\uff1a\r\n  slow: 3\u21921\u21922\u21920\u2192(-4)          \u8d70\u4e86 4 \u6b65\r\n  fast: 3\u21922\u2192(-4)\u21922\u2192(-4)       \u8d70\u4e86 4\u00d72=8 \u6b65\uff08\u5728\u73af\u91cc\u7ed5\u4e86\u4e00\u5708\uff09\r\n\r\n\u7b2c\u4e8c\u9636\u6bb5\uff1a\r\n  finder \u4ece head(3) \u51fa\u53d1\uff0cslow \u4ece\u76f8\u9047\u70b9(-4) \u51fa\u53d1\r\n  \u540c\u8d70 1 \u6b65\uff1afinder=1\uff0cslow=1  \u2190 \u76f8\u9047\uff0c\u8fd4\u56de\u8282\u70b9 1 \u2713<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h4 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\" dir=\"auto\">\u590d\u6742\u5ea6<\/h4>\n<div class=\"overflow-x-auto w-full px-2 mb-6\" dir=\"auto\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">\u7ef4\u5ea6<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">\u590d\u6742\u5ea6<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">\u8bf4\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">\u65f6\u95f4<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">O(n)<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">\u4e24\u4e2a\u9636\u6bb5\u5404\u6700\u591a\u8d70\u4e00\u5708<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">\u7a7a\u95f4<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\"><strong>O(1)<\/strong><\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">\u53ea\u7528\u4e24\u4e2a\u6307\u9488\uff0c\u65e0\u989d\u5916\u7a7a\u95f4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\">\u54c8\u5e0c\u8868\u4e5f\u80fd\u505a\uff08\u8bb0\u5f55\u8bbf\u95ee\u8fc7\u7684\u8282\u70b9\uff09\uff0c\u4f46\u7a7a\u95f4\u662f O(n)\uff0c\u9762\u8bd5\u4e2d\u76f4\u63a5\u8bf4 Floyd \u7b97\u6cd5\u5373\u53ef\u3002<\/p>\n<hr class=\"border-border-200 border-t-0.5 my-3 mx-1.5\" \/>\n<h4 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\" dir=\"auto\">\u9762\u8bd5\u65f6\u7684\u8868\u8fbe\u987a\u5e8f<\/h4>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\">\u5148\u8bf4\u5feb\u6162\u6307\u9488\u4e00\u5b9a\u4f1a\u5728\u73af\u5185\u76f8\u9047\uff08\u56e0\u4e3a fast \u6bd4 slow \u6bcf\u8f6e\u591a\u8d70 1 \u6b65\uff0c\u76f8\u5bf9\u901f\u5ea6 1\uff0c\u73af\u5185\u5fc5\u8ffd\u4e0a\uff09\u2192 \u518d\u7ed9\u51fa\u6570\u5b66\u63a8\u5bfc <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">a = c<\/code>\uff08\u6216 <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">a = (n-1)L + c<\/code>\uff09\u2192 \u7136\u540e\u5199\u4ee3\u7801\u3002\u628a\u63a8\u5bfc\u8fc7\u7a0b\u8bf4\u51fa\u6765\uff0c\u662f\u8fd9\u9053\u9898\u62ff\u6ee1\u5206\u7684\u5173\u952e\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u529b\u6263 141\uff08\u5224\u65ad\u6709\u73af\uff09+ 142\uff08\u627e\u5165<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[24],"tags":[],"class_list":["post-7399","post","type-post","status-publish","format-standard","hentry","category-value_docs"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/7399","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=7399"}],"version-history":[{"count":1,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/7399\/revisions"}],"predecessor-version":[{"id":7400,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/7399\/revisions\/7400"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=7399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=7399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=7399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}