{"id":389,"date":"2025-09-12T19:21:54","date_gmt":"2025-09-12T11:21:54","guid":{"rendered":"https:\/\/heyingnian.com\/?p=389"},"modified":"2025-09-12T19:22:36","modified_gmt":"2025-09-12T11:22:36","slug":"leetcode-25","status":"publish","type":"post","link":"https:\/\/heyingnian.com\/index.php\/2025\/09\/12\/leetcode-25\/","title":{"rendered":"K \u4e2a\u4e00\u7ec4\u7ffb\u8f6c\u94fe\u8868"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">\ud83d\udd17 K \u4e2a\u4e00\u7ec4\u7ffb\u8f6c\u94fe\u8868<\/h1>\n\n\n\n<p>\u9898\u76ee\u6765\u6e90\uff1a<a target=\"_blank\" rel=\"noreferrer noopener\"><a href=\"https:\/\/leetcode.cn\/problems\/reverse-nodes-in-k-group\/?envType=study-plan-v2&amp;envId=top-100-liked\" target=\"_blank\" rel=\"noopener\">25. K \u4e2a\u4e00\u7ec4\u7ffb\u8f6c\u94fe\u8868 &#8211; \u529b\u6263\uff08LeetCode\uff09<\/a><\/a><\/p>\n\n\n\n<p>\ud83d\udccc \u9898\u76ee\u63cf\u8ff0<\/p>\n\n\n\n<p>\u7ed9\u4f60\u94fe\u8868\u7684\u5934\u8282\u70b9 <code>head<\/code>\uff0c<strong>\u6bcf k \u4e2a\u8282\u70b9\u4e00\u7ec4\u8fdb\u884c\u7ffb\u8f6c<\/strong>\uff0c\u8bf7\u4f60\u8fd4\u56de\u4fee\u6539\u540e\u7684\u94fe\u8868\u3002<\/p>\n\n\n\n<p>\u8981\u6c42\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>k<\/code>\u00a0\u662f\u4e00\u4e2a\u6b63\u6574\u6570\uff0c\u4e14\u00a0<code>k &lt;= \u94fe\u8868\u957f\u5ea6<\/code><\/li>\n\n\n\n<li>\u5982\u679c\u8282\u70b9\u603b\u6570\u4e0d\u662f\u00a0<code>k<\/code>\u00a0\u7684\u6574\u6570\u500d\uff0c<strong>\u6700\u540e\u5269\u4f59\u7684\u8282\u70b9\u4fdd\u6301\u539f\u6709\u987a\u5e8f<\/strong><\/li>\n\n\n\n<li><strong>\u4e0d\u80fd\u53ea\u6539\u53d8\u8282\u70b9\u5185\u90e8\u7684\u503c\uff0c\u5fc5\u987b\u5b9e\u9645\u4ea4\u6362\u8282\u70b9\uff08\u6307\u9488\u91cd\u8fde\uff09<\/strong><\/li>\n<\/ul>\n\n\n\n<p>\u2705 \u793a\u4f8b\u89e3\u6790<\/p>\n\n\n\n<p>\u793a\u4f8b 1\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/heyingnian.com\/wp-content\/uploads\/2025\/09\/image-25.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"542\" height=\"222\" data-original=\"https:\/\/heyingnian.com\/wp-content\/uploads\/2025\/09\/image-25.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-390\"  sizes=\"auto, (max-width: 542px) 100vw, 542px\" \/><\/div><\/figure>\n\n\n\n<p>\u8f93\u5165\uff1a<code>head = [1,2,3,4,5]<\/code>, <code>k = 2<\/code><br>\u8f93\u51fa\uff1a<code>[2,1,4,3,5]<\/code><br>\u89e3\u91ca\uff1a\u524d\u4e24\u7ec4 <code>[1,2] \u2192 [2,1]<\/code>\uff0c<code>[3,4] \u2192 [4,3]<\/code>\uff0c\u5269\u4f59 <code>[5]<\/code> \u4e0d\u8db3 k=2\uff0c\u4fdd\u6301\u539f\u5e8f\u3002<\/p>\n\n\n\n<p>\u793a\u4f8b 2\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/heyingnian.com\/wp-content\/uploads\/2025\/09\/image-26.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"542\" height=\"222\" data-original=\"https:\/\/heyingnian.com\/wp-content\/uploads\/2025\/09\/image-26.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-391\"  sizes=\"auto, (max-width: 542px) 100vw, 542px\" \/><\/div><\/figure>\n\n\n\n<p>\u8f93\u5165\uff1a<code>head = [1,2,3,4,5]<\/code>, <code>k = 3<\/code><br>\u8f93\u51fa\uff1a<code>[3,2,1,4,5]<\/code><br>\u89e3\u91ca\uff1a\u7b2c\u4e00\u7ec4 <code>[1,2,3] \u2192 [3,2,1]<\/code>\uff0c\u5269\u4f59 <code>[4,5]<\/code> \u4e0d\u8db3 k=3\uff0c\u4fdd\u6301\u539f\u5e8f\u3002<\/p>\n\n\n\n<p>\u26a0\ufe0f \u63d0\u793a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u94fe\u8868\u4e2d\u7684\u8282\u70b9\u6570\u76ee\u4e3a\u00a0<code>n<\/code><\/li>\n\n\n\n<li><code>1 &lt;= k &lt;= n &lt;= 5000<\/code><\/li>\n\n\n\n<li><code>0 &lt;= Node.val &lt;= 1000<\/code><\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udca1 \u89e3\u6cd5\uff1a\u5206\u7ec4\u53cd\u8f6c + \u865a\u62df\u5934\u8282\u70b9 \u2014\u2014 O(n) \u65f6\u95f4\uff0cO(1) \u7a7a\u95f4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\n    public ListNode reverseKGroup(ListNode head, int k) {\n        ListNode dummy = new ListNode(0);\n        dummy.next = head;\n        ListNode pre = dummy;\n        ListNode end = dummy;\n\n        while (end != null) {\n            \/\/ 1. \u5b9a\u4f4d\u5f53\u524d\u7ec4\u7684\u5c3e\u8282\u70b9 end\n            for (int i = 0; i &lt; k &amp;&amp; end != null; i++) {\n                end = end.next;\n            }\n            if (end == null) break; \/\/ \u4e0d\u8db3 k \u4e2a\uff0c\u7ed3\u675f\n\n            \/\/ 2. \u4fdd\u5b58\u4e0b\u4e00\u7ec4\u7684\u8d77\u70b9\n            ListNode nextGroupStart = end.next;\n            end.next = null; \/\/ \u4e34\u65f6\u65ad\u5f00\uff0c\u4fbf\u4e8e\u53cd\u8f6c\n\n            \/\/ 3. \u53cd\u8f6c\u5f53\u524d\u7ec4 &#91;start ... end]\n            ListNode start = pre.next;\n            pre.next = reverse(start); \/\/ \u63a5\u4e0a\u53cd\u8f6c\u540e\u7684\u5934\n\n            \/\/ 4. \u5c06\u539f\u7ec4\u5934\uff08\u73b0\u7ec4\u5c3e\uff09\u8fde\u5230\u4e0b\u4e00\u7ec4\n            start.next = nextGroupStart;\n\n            \/\/ 5. \u66f4\u65b0 pre \u548c end\uff0c\u51c6\u5907\u4e0b\u4e00\u8f6e\n            pre = start;\n            end = start;\n        }\n\n        return dummy.next;\n    }\n\n    \/\/ \u53cd\u8f6c\u94fe\u8868\uff0c\u8fd4\u56de\u65b0\u5934\u8282\u70b9\n    public ListNode reverse(ListNode head) {\n        ListNode p = null;\n        while (head != null) {\n            ListNode next = head.next;\n            head.next = p;\n            p = head;\n            head = next;\n        }\n        return p;\n    }\n}<\/code><\/pre>\n\n\n\n<p>\ud83d\udcca \u590d\u6742\u5ea6\u5206\u6790<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u65f6\u95f4\u590d\u6742\u5ea6\uff1aO(n)<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u6bcf\u4e2a\u8282\u70b9\u6700\u591a\u88ab\u8bbf\u95ee\u4e24\u6b21\uff08\u4e00\u6b21\u5b9a\u4f4d end\uff0c\u4e00\u6b21\u53cd\u8f6c\uff09\uff0c\u603b\u4f53\u7ebf\u6027\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u7a7a\u95f4\u590d\u6742\u5ea6\uff1aO(1) \u2705<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u4ec5\u4f7f\u7528\u5e38\u6570\u6307\u9488\u53d8\u91cf\uff0c\u65e0\u9012\u5f52\u6808\uff08\u82e5\u9012\u5f52\u53cd\u8f6c\u5219\u7a7a\u95f4\u4e3a O(k)\uff09\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83e\udde9 \u89e3\u9898\u601d\u8def<\/p>\n\n\n\n<p>\u6838\u5fc3\u601d\u60f3\uff1a<strong>\u5206\u7ec4\u5207\u5272 + \u5c40\u90e8\u53cd\u8f6c + \u91cd\u65b0\u62fc\u63a5<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u521d\u59cb\u5316\uff1a\n<ul class=\"wp-block-list\">\n<li>\u521b\u5efa\u865a\u62df\u5934\u8282\u70b9\u00a0<code>dummy<\/code>\uff0c\u6307\u5411\u00a0<code>head<\/code>\u3002<\/li>\n\n\n\n<li><code>pre<\/code>\u00a0\u6307\u5411<strong>\u5f53\u524d\u7ec4\u7684\u524d\u9a71\u8282\u70b9<\/strong>\uff08\u521d\u59cb\u4e3a\u00a0<code>dummy<\/code>\uff09\u3002<\/li>\n\n\n\n<li><code>end<\/code>\u00a0\u7528\u4e8e\u5b9a\u4f4d<strong>\u5f53\u524d\u7ec4\u7684\u5c3e\u8282\u70b9<\/strong>\uff08\u521d\u59cb\u4e5f\u4e3a\u00a0<code>dummy<\/code>\uff09\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u5faa\u73af\u5904\u7406\u6bcf\u7ec4\uff1a\u00a0a. <strong>\u5b9a\u4f4d\u7ec4\u5c3e<\/strong>\uff1a<ul><li><code>end<\/code>\u00a0\u4ece\u5f53\u524d\u4f4d\u7f6e\u524d\u8fdb\u00a0<code>k<\/code>\u00a0\u6b65\u3002<\/li><li>\u82e5\u4e2d\u9014\u00a0<code>end == null<\/code>\u00a0\u2192 \u8bf4\u660e\u4e0d\u8db3\u00a0<code>k<\/code>\u00a0\u4e2a \u2192 \u76f4\u63a5\u9000\u51fa\u3002<\/li><\/ul>b. <strong>\u65ad\u5f00\u5f53\u524d\u7ec4<\/strong>\uff1a<ul><li>\u4fdd\u5b58\u00a0<code>nextGroupStart = end.next<\/code>\uff08\u4e0b\u4e00\u7ec4\u8d77\u70b9\uff09\u3002<\/li><li><code>end.next = null<\/code>\u00a0\u2192 \u4e34\u65f6\u65ad\u5f00\u5f53\u524d\u7ec4\uff0c\u4fbf\u4e8e\u72ec\u7acb\u53cd\u8f6c\u3002<\/li><\/ul>c. <strong>\u53cd\u8f6c\u5f53\u524d\u7ec4<\/strong>\uff1a<ul><li><code>start = pre.next<\/code>\uff08\u5f53\u524d\u7ec4\u5934\uff09<\/li><li><code>pre.next = reverse(start)<\/code>\u00a0\u2192 \u5c06\u53cd\u8f6c\u540e\u7684\u65b0\u5934\u63a5\u56de\u4e3b\u94fe\u3002<\/li><\/ul>d. <strong>\u62fc\u63a5\u4e0b\u4e00\u7ec4<\/strong>\uff1a<ul><li>\u539f\u6765\u7684\u00a0<code>start<\/code>\u00a0\u8282\u70b9\uff08\u73b0\u5728\u662f\u7ec4\u5c3e\uff09 \u2192\u00a0<code>start.next = nextGroupStart<\/code><\/li><\/ul>e. <strong>\u66f4\u65b0\u6307\u9488<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li><code>pre = start<\/code>\uff08\u5f53\u524d\u7ec4\u5c3e\u6210\u4e3a\u4e0b\u4e00\u7ec4\u7684\u524d\u9a71\uff09<\/li>\n\n\n\n<li><code>end = start<\/code>\uff08\u540c\u6b65\u4f4d\u7f6e\uff0c\u51c6\u5907\u4e0b\u4e00\u8f6e\u524d\u8fdb\uff09<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u8fd4\u56de\uff1a\n<ul class=\"wp-block-list\">\n<li><code>dummy.next<\/code>\u00a0\u4e3a\u6700\u7ec8\u94fe\u8868\u5934\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>\u4e3e\u4f8b\u8bf4\u660e\uff1a<\/p>\n\n\n\n<p>\u8f93\u5165\uff1a<code>head = [1,2,3,4,5]<\/code>, <code>k = 2<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\u521d\u59cb\uff1adummy \u2192 1 \u2192 2 \u2192 3 \u2192 4 \u2192 5<br>       pre^  end^<br><br>\u7b2c1\u8f6e\uff1a<br>end \u524d\u8fdb2\u6b65 \u2192 end \u6307\u5411 2<br>\u65ad\u5f00\uff1a2.next = null \u2192 [1\u21922] \u4e0e [3\u21924\u21925] \u5206\u79bb<br>\u53cd\u8f6c [1\u21922] \u2192 [2\u21921]<br>pre.next = 2 \u2192 dummy\u21922\u21921<br>1.next = 3 \u2192 1\u21923\u21924\u21925<br>\u66f4\u65b0\uff1apre = 1, end = 1<br><br>\u5f53\u524d\uff1adummy \u2192 2 \u2192 1 \u2192 3 \u2192 4 \u2192 5<br>                   pre^ end^<br><br>\u7b2c2\u8f6e\uff1a<br>end \u524d\u8fdb2\u6b65 \u2192 end \u6307\u5411 4<br>\u65ad\u5f00\uff1a4.next = null \u2192 [3\u21924] \u4e0e [5] \u5206\u79bb<br>\u53cd\u8f6c [3\u21924] \u2192 [4\u21923]<br>pre.next = 4 \u2192 1\u21924\u21923<br>3.next = 5 \u2192 3\u21925<br>\u66f4\u65b0\uff1apre = 3, end = 3<br><br>\u5f53\u524d\uff1adummy \u2192 2 \u2192 1 \u2192 4 \u2192 3 \u2192 5<br>                           pre^ end^<br><br>\u7b2c3\u8f6e\uff1a<br>end \u524d\u8fdb2\u6b65\uff1a\u7b2c\u4e00\u6b65 end=5\uff0c\u7b2c\u4e8c\u6b65 end=null \u2192 break<br><br>\u6700\u7ec8\uff1a[2,1,4,3,5] \u2705<\/code><\/pre>\n\n\n\n<p>\u8fb9\u754c\u5904\u7406\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>k = 1 \u2192 \u6bcf\u4e2a\u8282\u70b9\u81ea\u6210\u4e00\u7ec4 \u2192 \u53cd\u8f6c\u540e\u4e0d\u53d8 \u2192 \u539f\u94fe\u8868\u8fd4\u56de\u3002<\/li>\n\n\n\n<li>k = n \u2192 \u6574\u4e2a\u94fe\u8868\u53cd\u8f6c\u3002<\/li>\n\n\n\n<li>\u6700\u540e\u4e00\u7ec4\u4e0d\u8db3 k \u2192 \u4e0d\u8fdb\u5165\u53cd\u8f6c\u903b\u8f91 \u2192 \u81ea\u7136\u4fdd\u6301\u539f\u5e8f\u3002<\/li>\n\n\n\n<li>\u7a7a\u94fe\u8868\u6216\u5355\u8282\u70b9 \u2192 \u5b89\u5168\u5904\u7406\uff0c\u4e0d\u8fdb\u5165\u5faa\u73af\u6216\u76f4\u63a5\u8fd4\u56de\u3002<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udd17 K \u4e2a\u4e00\u7ec4\u7ffb\u8f6c\u94fe\u8868 \u9898\u76ee\u6765\u6e90\uff1a25. K \u4e2a\u4e00\u7ec4\u7ffb\u8f6c\u94fe\u8868 &#8211; \u529b\u6263\uff08LeetCode\uff09 \ud83d\udccc \u9898 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,38],"tags":[14,51],"class_list":["post-389","post","type-post","status-publish","format-standard","hentry","category-algorithm","category-linked_list","tag-algorithm","tag-linked_list"],"_links":{"self":[{"href":"https:\/\/heyingnian.com\/index.php\/wp-json\/wp\/v2\/posts\/389","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/heyingnian.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/heyingnian.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/heyingnian.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/heyingnian.com\/index.php\/wp-json\/wp\/v2\/comments?post=389"}],"version-history":[{"count":1,"href":"https:\/\/heyingnian.com\/index.php\/wp-json\/wp\/v2\/posts\/389\/revisions"}],"predecessor-version":[{"id":392,"href":"https:\/\/heyingnian.com\/index.php\/wp-json\/wp\/v2\/posts\/389\/revisions\/392"}],"wp:attachment":[{"href":"https:\/\/heyingnian.com\/index.php\/wp-json\/wp\/v2\/media?parent=389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/heyingnian.com\/index.php\/wp-json\/wp\/v2\/categories?post=389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/heyingnian.com\/index.php\/wp-json\/wp\/v2\/tags?post=389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}