{"id":255,"date":"2024-04-19T21:40:39","date_gmt":"2024-04-19T13:40:39","guid":{"rendered":"https:\/\/www.vanforever.com.cn\/?p=255"},"modified":"2024-09-11T10:24:18","modified_gmt":"2024-09-11T02:24:18","slug":"rick%e7%9a%84%e5%88%b7%e9%a2%98%e4%b9%8b%e8%b7%af","status":"publish","type":"post","link":"https:\/\/www.vanforever.com.cn\/?p=255","title":{"rendered":"Rick\u7684\u5237\u9898\u4e4b\u8def"},"content":{"rendered":"<div  class='collapse-block shadow-sm collapse-block-transparent collapsed hide-border-left'><div class='collapse-block-title'><span class='collapse-block-title-inner'>\u67e5\u770b\u7279\u8272\u56fe\u7247<\/span><i class='collapse-icon fa fa-angle-down'><\/i><\/div><div class='collapse-block-body' style='display:none;'><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic.vanforever.com.cn\/Vanforever\/20240412\/wallhaven-9dyr2x_3840x2400.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large\" data-original=\"https:\/\/pic.vanforever.com.cn\/Vanforever\/20240412\/wallhaven-9dyr2x_3840x2400.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" width=\"3840\" height=\"2400\" \/><\/div><\/div><\/div>\n<h1 id=\"rick\u7684\u5237\u9898\u4e4b\u8def\">Rick\u7684\u5237\u9898\u4e4b\u8def<\/h1>\n<h2 id=\"\u54c8\u5e0c\u8868\">\u54c8\u5e0c\u8868<\/h2>\n<h3 id=\"\u4e24\u6570\u4e4b\u548c\">\u4e24\u6570\u4e4b\u548c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \u548c\u4e00\u4e2a\u76ee\u6807\u503c <code>target<\/code>\uff0c\u8bf7\u4f60\u5728\u8be5\u6570\u7ec4\u4e2d\u627e\u51fa\u548c\u4e3a\u76ee\u6807\u503c\u7684\u90a3 <strong>\u4e24\u4e2a<\/strong> \u6574\u6570\uff0c\u5e76\u8fd4\u56de\u4ed6\u4eec\u7684\u6570\u7ec4\u4e0b\u6807\u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u5047\u8bbe\u6bcf\u79cd\u8f93\u5165\u53ea\u4f1a\u5bf9\u5e94\u4e00\u4e2a\u7b54\u6848\u3002\u4f46\u662f\uff0c\u4f60\u4e0d\u80fd\u91cd\u590d\u5229\u7528\u8fd9\u4e2a\u6570\u7ec4\u4e2d\u540c\u6837\u7684\u5143\u7d20\u3002<\/p>\n<p><strong>\u793a\u4f8b:<\/strong><\/p>\n<pre><code>\u7ed9\u5b9a nums = [2, 7, 11, 15], target = 9\n\n\u56e0\u4e3a nums[0] + nums[1] = 2 + 7 = 9\n\n\u6240\u4ee5\u8fd4\u56de [0, 1]\n<\/code><\/pre>\n<h4 id=\"\u9898\u76ee\u89e3\u6790\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u4f7f\u7528\u67e5\u627e\u8868\u6765\u89e3\u51b3\u8be5\u95ee\u9898\u3002<\/p>\n<p>\u8bbe\u7f6e\u4e00\u4e2a map \u5bb9\u5668 record \u7528\u6765\u8bb0\u5f55\u5143\u7d20\u7684\u503c\u4e0e\u7d22\u5f15\uff0c\u7136\u540e\u904d\u5386\u6570\u7ec4 nums\u3002<\/p>\n<ul>\n<li>\u6bcf\u6b21\u904d\u5386\u65f6\u4f7f\u7528\u4e34\u65f6\u53d8\u91cf complement \u7528\u6765\u4fdd\u5b58\u76ee\u6807\u503c\u4e0e\u5f53\u524d\u503c\u7684\u5dee\u503c<\/li>\n<li>\u5728\u6b64\u6b21\u904d\u5386\u4e2d\u67e5\u627e record \uff0c\u67e5\u770b\u662f\u5426\u6709\u4e0e complement \u4e00\u81f4\u7684\u503c\uff0c\u5982\u679c\u67e5\u627e\u6210\u529f\u5219\u8fd4\u56de\u67e5\u627e\u503c\u7684\u7d22\u5f15\u503c\u4e0e\u5f53\u524d\u53d8\u91cf\u7684\u503c i<\/li>\n<li>\u5982\u679c\u672a\u627e\u5230\uff0c\u5219\u5728 record \u4fdd\u5b58\u7d22\u5f15\u503c i\u4e0e\u8be5\u5143\u7d20<\/li>\n<\/ul>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic.vanforever.com.cn\/LeetCode\/Animation\/twosum.gif'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic.vanforever.com.cn\/LeetCode\/Animation\/twosum.gif\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" \/><\/div><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\/\/ \u65f6\u95f4\u590d\u6742\u5ea6\uff1aO(n)\n\/\/ \u7a7a\u95f4\u590d\u6742\u5ea6\uff1aO(n)\nclass Solution {\npublic:\n\n    vector&lt;int&gt; twoSum(vector&lt;int&gt;&amp; nums, int target) {\n        unordered_map&lt;int, int&gt; record;\n        for (int i = 0; i &lt; nums.size(); i++)\n        {\n            int complement = target - nums[i];\n            if (record.find(complement) != record.end())\n            {\n                int res[] = { i,record[complement] };\n                return vector&lt;int&gt;(res, res + 2);\n            }\n            record[nums[i]] = i;\n        }\n        return {};\n    }\n};\n<\/code><\/pre>\n<h3 id=\"\u7f57\u9a6c\u6570\u5b57\u8f6c\u6574\u6570\">\u7f57\u9a6c\u6570\u5b57\u8f6c\u6574\u6570<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-2\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7f57\u9a6c\u6570\u5b57\u5305\u542b\u4ee5\u4e0b\u4e03\u79cd\u5b57\u7b26: <code>I<\/code>\uff0c <code>V<\/code>\uff0c <code>X<\/code>\uff0c <code>L<\/code>\uff0c<code>C<\/code>\uff0c<code>D<\/code> \u548c <code>M<\/code>\u3002<\/p>\n<pre><code>\u5b57\u7b26          \u6570\u503c\nI             1\nV             5\nX             10\nL             50\nC             100\nD             500\nM             1000\n<\/code><\/pre>\n<p>\u4f8b\u5982\uff0c \u7f57\u9a6c\u6570\u5b57 <code>2<\/code> \u5199\u505a <code>II<\/code> \uff0c\u5373\u4e3a\u4e24\u4e2a\u5e76\u5217\u7684 1 \u3002<code>12<\/code> \u5199\u505a <code>XII<\/code> \uff0c\u5373\u4e3a <code>X<\/code> + <code>II<\/code> \u3002 <code>27<\/code> \u5199\u505a <code>XXVII<\/code>, \u5373\u4e3a <code>XX<\/code> + <code>V<\/code> + <code>II<\/code> \u3002<\/p>\n<p>\u901a\u5e38\u60c5\u51b5\u4e0b\uff0c\u7f57\u9a6c\u6570\u5b57\u4e2d\u5c0f\u7684\u6570\u5b57\u5728\u5927\u7684\u6570\u5b57\u7684\u53f3\u8fb9\u3002\u4f46\u4e5f\u5b58\u5728\u7279\u4f8b\uff0c\u4f8b\u5982 4 \u4e0d\u5199\u505a <code>IIII<\/code>\uff0c\u800c\u662f <code>IV<\/code>\u3002\u6570\u5b57 1 \u5728\u6570\u5b57 5 \u7684\u5de6\u8fb9\uff0c\u6240\u8868\u793a\u7684\u6570\u7b49\u4e8e\u5927\u6570 5 \u51cf\u5c0f\u6570 1 \u5f97\u5230\u7684\u6570\u503c 4 \u3002\u540c\u6837\u5730\uff0c\u6570\u5b57 9 \u8868\u793a\u4e3a <code>IX<\/code>\u3002\u8fd9\u4e2a\u7279\u6b8a\u7684\u89c4\u5219\u53ea\u9002\u7528\u4e8e\u4ee5\u4e0b\u516d\u79cd\u60c5\u51b5\uff1a<\/p>\n<ul>\n<li><code>I<\/code> \u53ef\u4ee5\u653e\u5728 <code>V<\/code> (5) \u548c <code>X<\/code> (10) \u7684\u5de6\u8fb9\uff0c\u6765\u8868\u793a 4 \u548c 9\u3002<\/li>\n<li><code>X<\/code> \u53ef\u4ee5\u653e\u5728 <code>L<\/code> (50) \u548c <code>C<\/code> (100) \u7684\u5de6\u8fb9\uff0c\u6765\u8868\u793a 40 \u548c 90\u3002<\/li>\n<li><code>C<\/code> \u53ef\u4ee5\u653e\u5728 <code>D<\/code> (500) \u548c <code>M<\/code> (1000) \u7684\u5de6\u8fb9\uff0c\u6765\u8868\u793a 400 \u548c 900\u3002<\/li>\n<\/ul>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u7f57\u9a6c\u6570\u5b57\uff0c\u5c06\u5176\u8f6c\u6362\u6210\u6574\u6570\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-2\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u9898\u76ee\u89e3\u6790\uff1a<\/p>\n<p>\u8fd9\u4e2a\u95ee\u9898\u662f\u5173\u4e8e\u5c06\u7f57\u9a6c\u6570\u5b57\u8f6c\u6362\u4e3a\u6574\u6570\u7684\u3002\u7f57\u9a6c\u6570\u5b57\u662f\u4e00\u79cd\u53e4\u8001\u7684\u6570\u5b57\u8868\u793a\u65b9\u6cd5\uff0c\u5b83\u4f7f\u7528\u5b57\u6bcd\u6765\u8868\u793a\u6570\u503c\u3002\u5728\u8fd9\u4e2a\u95ee\u9898\u4e2d\uff0c\u6211\u4eec\u9700\u8981\u7f16\u5199\u4e00\u4e2a\u51fd\u6570\uff0c\u8be5\u51fd\u6570\u63a5\u53d7\u4e00\u4e2a\u7f57\u9a6c\u6570\u5b57\u5b57\u7b26\u4e32\u4f5c\u4e3a\u8f93\u5165\uff0c\u5e76\u8fd4\u56de\u76f8\u5e94\u7684\u6574\u6570\u503c\u3002<\/p>\n<p>\u7f57\u9a6c\u6570\u5b57\u7684\u8868\u793a\u89c4\u5219\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li>\u6bcf\u4e2a\u5b57\u6bcd\u4ee3\u8868\u4e00\u4e2a\u7279\u5b9a\u7684\u6570\u503c\u3002<\/li>\n<li>\u5982\u679c\u4e00\u4e2a\u8f83\u5c0f\u7684\u6570\u503c\u5728\u8f83\u5927\u7684\u6570\u503c\u7684\u5de6\u8fb9\uff0c\u90a3\u4e48\u5b83\u8868\u793a\u4ece\u8f83\u5927\u7684\u6570\u503c\u4e2d\u51cf\u53bb\u8fd9\u4e2a\u8f83\u5c0f\u7684\u6570\u503c\u3002\u4f8b\u5982\uff0c&#8221;IV&#8221; \u8868\u793a 4\uff0c\u56e0\u4e3a &#8220;I&#8221; \u4ee3\u8868 1\uff0c&#8221;V&#8221; \u4ee3\u8868 5\uff0c\u6240\u4ee5 &#8220;IV&#8221; \u662f 5 &#8211; 1 = 4\u3002<\/li>\n<li>\u5982\u679c\u4e00\u4e2a\u8f83\u5c0f\u7684\u6570\u503c\u5728\u8f83\u5927\u7684\u6570\u503c\u7684\u53f3\u8fb9\uff0c\u90a3\u4e48\u5b83\u8868\u793a\u52a0\u5230\u8f83\u5927\u7684\u6570\u503c\u4e0a\u3002\u4f8b\u5982\uff0c&#8221;VI&#8221; \u8868\u793a 6\uff0c\u56e0\u4e3a &#8220;V&#8221; \u4ee3\u8868 5\uff0c&#8221;I&#8221; \u4ee3\u8868 1\uff0c\u6240\u4ee5 &#8220;VI&#8221; \u662f 5 + 1 = 6\u3002<\/li>\n<\/ul>\n<p>\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u67e5\u627e\u8868\uff08\u5728\u672c\u4f8b\u4e2d\u662f\u4e00\u4e2a\u54c8\u5e0c\u8868\u6216\u5b57\u5178\uff09\u6765\u5b58\u50a8\u6bcf\u4e2a\u7f57\u9a6c\u6570\u5b57\u5b57\u6bcd\u5bf9\u5e94\u7684\u6574\u6570\u503c\u3002\u7136\u540e\uff0c\u6211\u4eec\u904d\u5386\u8f93\u5165\u7684\u7f57\u9a6c\u6570\u5b57\u5b57\u7b26\u4e32\uff0c\u5e76\u6839\u636e\u4e0a\u8ff0\u89c4\u5219\u8ba1\u7b97\u6574\u6570\u503c\u3002<\/p>\n<p>\u5728\u63d0\u4f9b\u7684\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u521b\u5efa\u4e86\u4e00\u4e2a\u540d\u4e3a <code>symbolValues<\/code> \u7684\u54c8\u5e0c\u8868\uff0c\u5176\u4e2d\u952e\u662f\u7f57\u9a6c\u6570\u5b57\u5b57\u6bcd\uff0c\u503c\u662f\u76f8\u5e94\u7684\u6574\u6570\u503c\u3002\u7136\u540e\uff0c\u5728 <code>romanToInt<\/code> \u51fd\u6570\u4e2d\uff0c\u6211\u4eec\u904d\u5386\u8f93\u5165\u7684\u5b57\u7b26\u4e32 <code>s<\/code>\uff0c\u5e76\u4f7f\u7528 <code>symbolValues<\/code> \u6765\u67e5\u627e\u6bcf\u4e2a\u5b57\u7b26\u5bf9\u5e94\u7684\u6574\u6570\u503c\u3002<\/p>\n<p>\u5728\u904d\u5386\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u68c0\u67e5\u5f53\u524d\u5b57\u7b26\u7684\u6574\u6570\u503c\u662f\u5426\u5c0f\u4e8e\u4e0b\u4e00\u4e2a\u5b57\u7b26\u7684\u6574\u6570\u503c\u3002\u5982\u679c\u662f\u8fd9\u6837\uff0c\u6211\u4eec\u5c06\u5f53\u524d\u5b57\u7b26\u7684\u6574\u6570\u503c\u4ece\u603b\u548c\u4e2d\u51cf\u53bb\uff1b\u5426\u5219\uff0c\u6211\u4eec\u5c06\u5176\u6dfb\u52a0\u5230\u603b\u548c\u4e2d\u3002\u8fd9\u6837\uff0c\u6211\u4eec\u5c31\u80fd\u591f\u6b63\u786e\u5904\u7406\u7f57\u9a6c\u6570\u5b57\u4e2d\u7684\u51cf\u6cd5\u60c5\u51b5\u3002<\/p>\n<p>\u6700\u540e\uff0c\u51fd\u6570\u8fd4\u56de\u8ba1\u7b97\u5f97\u5230\u7684\u603b\u548c\uff0c\u5373\u8f93\u5165\u7f57\u9a6c\u6570\u5b57\u5b57\u7b26\u4e32\u5bf9\u5e94\u7684\u6574\u6570\u503c\u3002<\/p>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"III\"\n\u8f93\u51fa: 3\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"IV\"\n\u8f93\u51fa: 4\n<\/code><\/pre>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-2\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;unordered_map&gt;\n#include &lt;string&gt;\n\nusing namespace std;\n\nclass Solution {\nprivate:\n    unordered_map&lt;char, int&gt; symbolValues = {\n        {'I', 1},\n        {'V', 5},\n        {'X', 10},\n        {'L', 50},\n        {'C', 100},\n        {'D', 500},\n        {'M', 1000},\n    };\n\n\n\npublic:\n    int romanToInt(string s) {\n        int length = s.length();\n        int ans = 0;\n\n        for (int i = 0; i &lt; length; i++)\n        {\n            int value = symbolValues[s[i]];\n\n            if (i &lt; length - 1 &amp;&amp; value &lt; symbolValues[s[i + 1]])\n                ans -= value;\n            else\n                ans += value;\n        }\n\n        return ans;\n    }\n};\n<\/code><\/pre>\n<h3 id=\"\u591a\u6570\u5143\u7d20\">\u591a\u6570\u5143\u7d20<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-3\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u5927\u5c0f\u4e3a <code>n<\/code> \u7684\u6570\u7ec4 <code>nums<\/code> \uff0c\u8fd4\u56de\u5176\u4e2d\u7684\u591a\u6570\u5143\u7d20\u3002\u591a\u6570\u5143\u7d20\u662f\u6307\u5728\u6570\u7ec4\u4e2d\u51fa\u73b0\u6b21\u6570 <strong>\u5927\u4e8e<\/strong> <code>\u230a n\/2 \u230b<\/code> \u7684\u5143\u7d20\u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u5047\u8bbe\u6570\u7ec4\u662f\u975e\u7a7a\u7684\uff0c\u5e76\u4e14\u7ed9\u5b9a\u7684\u6570\u7ec4\u603b\u662f\u5b58\u5728\u591a\u6570\u5143\u7d20\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-3\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u9996\u5148\uff0c\u4ee3\u7801\u5b9a\u4e49\u4e86\u4e00\u4e2a <code>Solution<\/code> \u7c7b\uff0c\u5e76\u5728\u5176\u4e2d\u5b9e\u73b0\u4e86 <code>majorityElement<\/code> \u51fd\u6570\u3002\u8fd9\u4e2a\u51fd\u6570\u63a5\u53d7\u4e00\u4e2a\u6574\u6570\u5411\u91cf <code>nums<\/code>\uff0c\u5e76\u8fd4\u56de\u5411\u91cf\u4e2d\u7684\u4f17\u6570\u3002<\/p>\n<p>\u51fd\u6570\u5185\u90e8\u5b9a\u4e49\u4e86\u4e00\u4e2a <code>unordered_map&lt;int, int&gt;<\/code> \u7c7b\u578b\u7684\u53d8\u91cf <code>counts<\/code>\uff0c\u7528\u4e8e\u5b58\u50a8\u6bcf\u4e2a\u5143\u7d20\u53ca\u5176\u51fa\u73b0\u7684\u6b21\u6570\u3002<code>unordered_map<\/code> \u662f\u4e00\u4e2a\u54c8\u5e0c\u8868\u5b9e\u73b0\uff0c\u5b83\u5141\u8bb8\u6211\u4eec\u4ee5\u5e38\u6570\u5e73\u5747\u65f6\u95f4\u590d\u6742\u5ea6\u8fdb\u884c\u63d2\u5165\u3001\u5220\u9664\u548c\u67e5\u627e\u64cd\u4f5c\u3002<\/p>\n<p>\u7136\u540e\uff0c\u51fd\u6570\u5b9a\u4e49\u4e86\u4e24\u4e2a\u6574\u6570\u53d8\u91cf <code>majority<\/code> \u548c <code>cnt<\/code>\uff0c\u5206\u522b\u7528\u4e8e\u5b58\u50a8\u5f53\u524d\u7684\u4f17\u6570\u548c\u4f17\u6570\u7684\u8ba1\u6570\u3002\u521d\u59cb\u65f6\uff0c\u8fd9\u4e24\u4e2a\u53d8\u91cf\u90fd\u88ab\u8bbe\u7f6e\u4e3a0\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\uff0c\u51fd\u6570\u904d\u5386\u8f93\u5165\u5411\u91cf <code>nums<\/code> \u4e2d\u7684\u6bcf\u4e2a\u5143\u7d20\u3002\u5bf9\u4e8e\u6bcf\u4e2a\u5143\u7d20\uff0c\u5b83\u9996\u5148\u5c06\u5176\u5728 <code>counts<\/code> \u4e2d\u7684\u8ba1\u6570\u52a01\u3002\u7136\u540e\uff0c\u5b83\u68c0\u67e5\u8be5\u5143\u7d20\u7684\u8ba1\u6570\u662f\u5426\u5927\u4e8e <code>cnt<\/code>\uff08\u5373\u5f53\u524d\u4f17\u6570\u7684\u8ba1\u6570\uff09\u3002\u5982\u679c\u662f\uff0c\u90a3\u4e48\u5b83\u66f4\u65b0 <code>majority<\/code> \u548c <code>cnt<\/code>\uff0c\u5c06\u5f53\u524d\u5143\u7d20\u8bbe\u7f6e\u4e3a\u65b0\u7684\u4f17\u6570\uff0c\u5e76\u5c06\u5176\u8ba1\u6570\u8bbe\u7f6e\u4e3a\u5f53\u524d\u5143\u7d20\u7684\u8ba1\u6570\u3002<\/p>\n<p>\u6700\u540e\uff0c\u51fd\u6570\u8fd4\u56de <code>majority<\/code>\uff0c\u5373\u5411\u91cf\u4e2d\u7684\u4f17\u6570\u3002<\/p>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [3,2,3]\n\u8f93\u51fa\uff1a3\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [2,2,1,1,1,2,2]\n\u8f93\u51fa\uff1a2\n<\/code><\/pre>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-3\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    int majorityElement(vector&lt;int&gt;&amp; nums) {\n        unordered_map&lt;int, int&gt; counts;\n        int majority = 0, cnt = 0;   \/\/majority \u7528\u4e8e\u5b58\u50a8\u5f53\u524d\u7684\u4f17\u6570\uff0ccnt \u7528\u4e8e\u5b58\u50a8\u4f17\u6570\u5f53\u524d\u7684\u8ba1\u6570\u3002\n        for (int num : nums) {   \n            ++counts[num];\n            if (counts[num] &gt; cnt) {\n                majority = num;\n                cnt = counts[num];\n            }\n        }\n        return majority;\n    }\n};\n\n<\/code><\/pre>\n<h3 id=\"\u5b58\u5728\u91cd\u590d\u5143\u7d20\">\u5b58\u5728\u91cd\u590d\u5143\u7d20<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-4\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \u3002\u5982\u679c\u4efb\u4e00\u503c\u5728\u6570\u7ec4\u4e2d\u51fa\u73b0 <strong>\u81f3\u5c11\u4e24\u6b21<\/strong> \uff0c\u8fd4\u56de <code>true<\/code> \uff1b\u5982\u679c\u6570\u7ec4\u4e2d\u6bcf\u4e2a\u5143\u7d20\u4e92\u4e0d\u76f8\u540c\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-4\">\u9898\u76ee\u89e3\u6790<\/h4>\n<ul>\n<li><code>unordered_map<\/code>\u662f\u4e00\u4e2a\u952e\u503c\u5bf9\u7684\u96c6\u5408\uff0c\u5b83\u5b58\u50a8\u7684\u662f\u952e\u548c\u4e0e\u952e\u5173\u8054\u7684\u503c\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u5e76\u4e0d\u5173\u5fc3\u4e0e\u952e\u5173\u8054\u7684\u503c\uff0c\u6211\u4eec\u53ea\u9700\u8981\u68c0\u67e5\u952e\u662f\u5426\u5b58\u5728\u3002<\/li>\n<li><code>unordered_set<\/code>\u662f\u4e00\u4e2a\u53ea\u5305\u542b\u952e\u7684\u96c6\u5408\uff0c\u5b83\u4e0d\u5141\u8bb8\u6709\u91cd\u590d\u7684\u5143\u7d20\u3002\u8fd9\u5b8c\u5168\u7b26\u5408\u6211\u4eec\u7684\u9700\u6c42\uff1a\u6211\u4eec\u53ea\u9700\u8981\u68c0\u67e5\u4e00\u4e2a\u5143\u7d20\u662f\u5426\u5df2\u7ecf\u5728\u96c6\u5408\u4e2d\u51fa\u73b0\u8fc7\u3002<\/li>\n<\/ul>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,2,3,1]\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,2,3,4]\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,1,1,3,3,4,3,2,4,2]\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-4\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;unordered_set&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    bool containsDuplicate(vector&lt;int&gt;&amp; nums) {\n        unordered_set&lt;int&gt; s;\n        for (int x : nums) {\n            if (s.find(x) != s.end()) {\n                return true;\n            }\n            s.insert(x);\n        }\n        return false;\n    }\n};\n\n<\/code><\/pre>\n<h3 id=\"\u5b58\u5728\u91cd\u590d\u5143\u7d20\u2171\">\u5b58\u5728\u91cd\u590d\u5143\u7d20\u2161<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-5\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \u548c\u4e00\u4e2a\u6574\u6570 <code>k<\/code> \uff0c\u5224\u65ad\u6570\u7ec4\u4e2d\u662f\u5426\u5b58\u5728\u4e24\u4e2a <strong>\u4e0d\u540c\u7684\u7d22\u5f15<\/strong> <code>i<\/code> \u548c <code>j<\/code> \uff0c\u6ee1\u8db3 <code>nums[i] == nums[j]<\/code> \u4e14 <code>abs(i - j) &lt;= k<\/code> \u3002\u5982\u679c\u5b58\u5728\uff0c\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-5\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p><strong>\u6ed1\u52a8\u7a97\u53e3 + \u54c8\u5e0c\u8868<\/strong><br \/>\n\u6574\u7406\u9898\u610f\uff1a\u662f\u5426\u5b58\u5728\u957f\u5ea6\u4e0d\u8d85\u8fc7\u7684 <code>k+1<\/code> \u7a97\u53e3\uff0c\u7a97\u53e3\u5185\u6709\u76f8\u540c\u5143\u7d20\u3002<\/p>\n<p>\u6211\u4eec\u53ef\u4ee5\u4ece\u524d\u5f80\u540e\u904d\u5386 <code>nums<\/code>\uff0c\u540c\u65f6\u4f7f\u7528 Set \u8bb0\u5f55\u904d\u5386\u5f53\u524d\u6ed1\u7a97\u5185\u51fa\u73b0\u8fc7\u7684\u5143\u7d20\u3002<\/p>\n<p>\u5047\u8bbe\u5f53\u524d\u904d\u5386\u7684\u5143\u7d20\u4e3a <code>nums[i]<\/code><\/p>\n<p>\u4e0b\u6807\u5c0f\u4e8e\u7b49\u4e8e k\uff08\u8d77\u59cb\u6ed1\u7a97\u957f\u5ea6\u8fd8\u4e0d\u8db3 <code>k+1<\/code>\uff09\uff1a\u76f4\u63a5\u5f80\u6ed1\u7a97\u52a0\u6570\uff0c\u5373\u5c06\u5f53\u524d\u5143\u7d20\u52a0\u5165 Set \u4e2d\uff1b<br \/>\n\u4e0b\u6807\u5927\u4e8e <code>k<\/code>\uff1a\u5c06\u4e0a\u4e00\u6ed1\u7a97\u7684\u5de6\u7aef\u70b9\u5143\u7d20 <code>nums[i\u2212k\u22121]<\/code>\u79fb\u9664\uff0c\u5224\u65ad\u5f53\u524d\u6ed1\u7a97\u7684\u53f3\u7aef\u70b9\u5143\u7d20 <code>nums[i]<\/code> \u662f\u5426\u5b58\u5728 Set \u4e2d\uff0c\u82e5\u5b58\u5728\uff0c\u8fd4\u56de True\uff0c\u5426\u5219\u5c06\u5f53\u524d\u5143\u7d20 <code>nums[i]<\/code> \u52a0\u5165 Set \u4e2d\u3002<br \/>\n\u91cd\u590d\u4e0a\u8ff0\u8fc7\u7a0b\uff0c\u82e5\u6574\u4e2a<code>nums<\/code> \u5904\u7406\u5b8c\u540e\u4ecd\u672a\u627e\u5230\uff0c\u8fd4\u56de False\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-5\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    bool containsNearbyDuplicate(vector&lt;int&gt;&amp; nums, int k) {\n        int num_size = nums.size();\n        unordered_map&lt;int,bool&gt; set;\n        for (int i = 0; i &lt; num_size; i++)\n        {\n            if (i &gt; k) set[nums[i - k -1]] = false;\n            if (set[nums[i]]) return true;\n            set[nums[i]] = true;\n        }\n\n        return false;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,2,3,1], k = 3\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,0,1,1], k = 1\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,2,3,1,2,3], k = 2\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<h3 id=\"\u6709\u6548\u7684\u5b57\u6bcd\u5f02\u4f4d\u8bcd\">\u6709\u6548\u7684\u5b57\u6bcd\u5f02\u4f4d\u8bcd<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-6\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e24\u4e2a\u5b57\u7b26\u4e32 <code>*s*<\/code> \u548c <code>*t*<\/code> \uff0c\u7f16\u5199\u4e00\u4e2a\u51fd\u6570\u6765\u5224\u65ad <code>*t*<\/code> \u662f\u5426\u662f <code>*s*<\/code> \u7684\u5b57\u6bcd\u5f02\u4f4d\u8bcd\u3002<\/p>\n<p><strong>\u6ce8\u610f\uff1a<\/strong>\u82e5 <code>*s*<\/code> \u548c <code>*t*<\/code> \u4e2d\u6bcf\u4e2a\u5b57\u7b26\u51fa\u73b0\u7684\u6b21\u6570\u90fd\u76f8\u540c\uff0c\u5219\u79f0 <code>*s*<\/code> \u548c <code>*t*<\/code> \u4e92\u4e3a\u5b57\u6bcd\u5f02\u4f4d\u8bcd\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-6\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u89e3\u9898\u601d\u8def\uff1a<\/p>\n<ol start=\"\">\n<li>\u9996\u5148\uff0c\u68c0\u67e5\u4e24\u4e2a\u5b57\u7b26\u4e32\u7684\u957f\u5ea6\u662f\u5426\u76f8\u7b49\u3002\u5982\u679c\u957f\u5ea6\u4e0d\u7b49\uff0c\u90a3\u4e48\u5b83\u4eec\u80af\u5b9a\u4e0d\u662f\u53d8\u4f4d\u8bcd\uff0c\u76f4\u63a5\u8fd4\u56defalse\u3002<\/li>\n<li>\u63a5\u4e0b\u6765\uff0c\u4f7f\u7528\u4e00\u4e2a\u65e0\u5e8f\u6620\u5c04\uff08unordered_map\uff09<code>dic<\/code>\u6765\u8bb0\u5f55\u5b57\u7b26\u4e32s\u4e2d\u6bcf\u4e2a\u5b57\u7b26\u51fa\u73b0\u7684\u6b21\u6570\u3002\u904d\u5386\u5b57\u7b26\u4e32s\uff0c\u5bf9\u4e8e\u6bcf\u4e2a\u5b57\u7b26c\uff0c\u5c06\u5176\u5728<code>dic<\/code>\u4e2d\u5bf9\u5e94\u7684\u503c\u52a01\u3002<\/li>\n<li>\u7136\u540e\uff0c\u904d\u5386\u5b57\u7b26\u4e32t\u3002\u5bf9\u4e8e\u6bcf\u4e2a\u5b57\u7b26c\uff0c\u5c06\u5176\u5728<code>dic<\/code>\u4e2d\u5bf9\u5e94\u7684\u503c\u51cf1\u3002\u8fd9\u4e00\u6b65\u76f8\u5f53\u4e8e\u4eces\u7684\u5b57\u7b26\u96c6\u5408\u4e2d\u79fb\u9664t\u4e2d\u7684\u5b57\u7b26\u3002<\/li>\n<li>\u6700\u540e\uff0c\u68c0\u67e5<code>dic<\/code>\u4e2d\u7684\u6240\u6709\u503c\u662f\u5426\u90fd\u4e3a0\u3002\u5982\u679c\u6709\u4efb\u4f55\u4e00\u4e2a\u503c\u4e0d\u4e3a0\uff0c\u8bf4\u660es\u548ct\u7684\u5b57\u7b26\u96c6\u5408\u4e0d\u540c\uff0c\u56e0\u6b64\u5b83\u4eec\u4e0d\u662f\u53d8\u4f4d\u8bcd\uff0c\u8fd4\u56defalse\u3002\u5982\u679c\u6240\u6709\u503c\u90fd\u4e3a0\uff0c\u8bf4\u660es\u548ct\u7684\u5b57\u7b26\u96c6\u5408\u5b8c\u5168\u76f8\u540c\uff0c\u53ea\u662f\u987a\u5e8f\u4e0d\u540c\uff0c\u5b83\u4eec\u662f\u53d8\u4f4d\u8bcd\uff0c\u8fd4\u56detrue\u3002<\/li>\n<\/ol>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-6\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code>class Solution {\npublic:\n    bool isAnagram(string s, string t) {\n        if (s.length() != t.length())\n            return false;\n        unordered_map&lt;char, int&gt; dic;\n        for (char c : s) {\n            dic[c] += 1;\n        }\n        for (char c : t) {\n            dic[c] -= 1;\n        }\n        for (auto kv : dic) {\n            if (kv.second != 0)\n                return false;\n        }\n        return true;\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"anagram\", t = \"nagaram\"\n\u8f93\u51fa: true\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"rat\", t = \"car\"\n\u8f93\u51fa: false\n<\/code><\/pre>\n<h3 id=\"\u4e22\u5931\u7684\u6570\u5b57\">\u4e22\u5931\u7684\u6570\u5b57<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-7\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u5305\u542b <code>[0, n]<\/code> \u4e2d <code>n<\/code> \u4e2a\u6570\u7684\u6570\u7ec4 <code>nums<\/code> \uff0c\u627e\u51fa <code>[0, n]<\/code> \u8fd9\u4e2a\u8303\u56f4\u5185\u6ca1\u6709\u51fa\u73b0\u5728\u6570\u7ec4\u4e2d\u7684\u90a3\u4e2a\u6570\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-7\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u4f7f\u7528\u54c8\u5e0c\u96c6\u5408\uff0c\u53ef\u4ee5\u5c06\u65f6\u95f4\u590d\u6742\u5ea6\u964d\u4f4e\u5230 <code>O(n)<\/code><\/p>\n<p>\u9996\u5148\u904d\u5386\u6570\u7ec4 <code>nums<\/code>\uff0c\u5c06\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e2a\u5143\u7d20\u52a0\u5165\u54c8\u5e0c\u96c6\u5408\uff0c\u7136\u540e\u4f9d\u6b21\u68c0\u67e5\u4ece <code>0<\/code> \u5230 <code>n<\/code> \u7684\u6bcf\u4e2a\u6574\u6570\u662f\u5426\u5728\u54c8\u5e0c\u96c6\u5408\u4e2d\uff0c\u4e0d\u5728\u54c8\u5e0c\u96c6\u5408\u4e2d\u7684\u6570\u5b57\u5373\u4e3a\u4e22\u5931\u7684\u6570\u5b57\u3002\u7531\u4e8e\u54c8\u5e0c\u96c6\u5408\u7684\u6bcf\u6b21\u6dfb\u52a0\u5143\u7d20\u548c\u67e5\u627e\u5143\u7d20\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u90fd\u662f <code>O(1)<\/code>\uff0c\u56e0\u6b64\u603b\u65f6\u95f4\u590d\u6742\u5ea6\u662f <code>O(n)<\/code>\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-7\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-c++\" lang=\"c++\">class Solution {\npublic:\n    int missingNumber(vector&lt;int&gt;&amp; nums) {\n        unordered_set&lt;int&gt; findmissing;\n\n        int numsize = nums.size();\n\n        for (auto&amp; i : nums)\n        {\n            findmissing.insert(i);\n        }\n\n        int missing = -1;\n\n        for (int i = 0; i &lt; numsize; i++)\n        {\n            if (!findmissing.count(i))\n            {\n                missing = i;\n                break;\n            }\n            \n        }\n        if (missing == -1)\n            return numsize;\n        return missing;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [3,0,1]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1an = 3\uff0c\u56e0\u4e3a\u6709 3 \u4e2a\u6570\u5b57\uff0c\u6240\u4ee5\u6240\u6709\u7684\u6570\u5b57\u90fd\u5728\u8303\u56f4 [0,3] \u5185\u30022 \u662f\u4e22\u5931\u7684\u6570\u5b57\uff0c\u56e0\u4e3a\u5b83\u6ca1\u6709\u51fa\u73b0\u5728 nums \u4e2d\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [0,1]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1an = 2\uff0c\u56e0\u4e3a\u6709 2 \u4e2a\u6570\u5b57\uff0c\u6240\u4ee5\u6240\u6709\u7684\u6570\u5b57\u90fd\u5728\u8303\u56f4 [0,2] \u5185\u30022 \u662f\u4e22\u5931\u7684\u6570\u5b57\uff0c\u56e0\u4e3a\u5b83\u6ca1\u6709\u51fa\u73b0\u5728 nums \u4e2d\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [9,6,4,2,3,5,7,0,1]\n\u8f93\u51fa\uff1a8\n\u89e3\u91ca\uff1an = 9\uff0c\u56e0\u4e3a\u6709 9 \u4e2a\u6570\u5b57\uff0c\u6240\u4ee5\u6240\u6709\u7684\u6570\u5b57\u90fd\u5728\u8303\u56f4 [0,9] \u5185\u30028 \u662f\u4e22\u5931\u7684\u6570\u5b57\uff0c\u56e0\u4e3a\u5b83\u6ca1\u6709\u51fa\u73b0\u5728 nums \u4e2d\u3002\n<\/code><\/pre>\n<h3 id=\"\u540c\u6784\u5b57\u7b26\u4e32\">\u540c\u6784\u5b57\u7b26\u4e32<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-8\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e24\u4e2a\u5b57\u7b26\u4e32 <code>s<\/code> \u548c <code>t<\/code> \uff0c\u5224\u65ad\u5b83\u4eec\u662f\u5426\u662f\u540c\u6784\u7684\u3002<\/p>\n<p>\u5982\u679c <code>s<\/code> \u4e2d\u7684\u5b57\u7b26\u53ef\u4ee5\u6309\u67d0\u79cd\u6620\u5c04\u5173\u7cfb\u66ff\u6362\u5f97\u5230 <code>t<\/code> \uff0c\u90a3\u4e48\u8fd9\u4e24\u4e2a\u5b57\u7b26\u4e32\u662f\u540c\u6784\u7684\u3002<\/p>\n<p>\u6bcf\u4e2a\u51fa\u73b0\u7684\u5b57\u7b26\u90fd\u5e94\u5f53\u6620\u5c04\u5230\u53e6\u4e00\u4e2a\u5b57\u7b26\uff0c\u540c\u65f6\u4e0d\u6539\u53d8\u5b57\u7b26\u7684\u987a\u5e8f\u3002\u4e0d\u540c\u5b57\u7b26\u4e0d\u80fd\u6620\u5c04\u5230\u540c\u4e00\u4e2a\u5b57\u7b26\u4e0a\uff0c\u76f8\u540c\u5b57\u7b26\u53ea\u80fd\u6620\u5c04\u5230\u540c\u4e00\u4e2a\u5b57\u7b26\u4e0a\uff0c\u5b57\u7b26\u53ef\u4ee5\u6620\u5c04\u5230\u81ea\u5df1\u672c\u8eab\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-8\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u6211\u4eec\u7ef4\u62a4\u4e24\u5f20\u54c8\u5e0c\u8868\uff0c\u7b2c\u4e00\u5f20\u54c8\u5e0c\u8868 <code>s2t<\/code> \u4ee5 <code>s<\/code> \u4e2d\u5b57\u7b26\u4e3a\u952e\uff0c\u6620\u5c04\u81f3 <code>t<\/code> \u7684\u5b57\u7b26\u4e3a\u503c\uff0c\u7b2c\u4e8c\u5f20\u54c8\u5e0c\u8868 <code>t2s<\/code> \u4ee5 <code>t<\/code> \u4e2d\u5b57\u7b26\u4e3a\u952e\uff0c\u6620\u5c04\u81f3 <code>s<\/code> \u7684\u5b57\u7b26\u4e3a\u503c\u3002\u4ece\u5de6\u81f3\u53f3\u904d\u5386\u4e24\u4e2a\u5b57\u7b26\u4e32\u7684\u5b57\u7b26\uff0c\u4e0d\u65ad\u66f4\u65b0\u4e24\u5f20\u54c8\u5e0c\u8868\uff0c\u5982\u679c\u51fa\u73b0\u51b2\u7a81\uff08\u5373\u5f53\u524d\u4e0b\u6807 <code>index<\/code> \u5bf9\u5e94\u7684\u5b57\u7b26 <code>s[index]<\/code> \u5df2\u7ecf\u5b58\u5728\u6620\u5c04\u4e14\u4e0d\u4e3a <code>t[index]<\/code> \u6216\u5f53\u524d\u4e0b\u6807 <code>index<\/code> \u5bf9\u5e94\u7684\u5b57\u7b26 <code>t[index]<\/code>\u5df2\u7ecf\u5b58\u5728\u6620\u5c04\u4e14\u4e0d\u4e3a <code>s[index]<\/code> \u65f6\u8bf4\u660e\u4e24\u4e2a\u5b57\u7b26\u4e32\u65e0\u6cd5\u6784\u6210\u540c\u6784\uff0c\u8fd4\u56de <code>false<\/code>\u3002<\/p>\n<p>\u5982\u679c\u904d\u5386\u7ed3\u675f\u6ca1\u6709\u51fa\u73b0\u51b2\u7a81\uff0c\u5219\u8868\u660e\u4e24\u4e2a\u5b57\u7b26\u4e32\u662f\u540c\u6784\u7684\uff0c\u8fd4\u56de <code>true<\/code> \u5373\u53ef\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-8\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;string&gt;\n#include &lt;iostream&gt;\n#include &lt;unordered_map&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    bool isIsomorphic(string s, string t) {\n        unordered_map&lt;char, char&gt; s2t;\n        unordered_map&lt;char, char&gt; t2s;\n\n        int length = s.length();\n\n        for (int i = 0; i &lt; length; i++)\n        {\n            char x = s[i];\n            char y = t[i];\n            while ((s2t.count(x) &amp;&amp; s2t[x] != y) || (t2s.count(y) &amp;&amp; t2s[y] != x))\n            {\n                return false;\n            }\n            s2t[x] = y;\n            t2s[y] = x;\n        }\n\n        return true;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"egg\", t = \"add\"\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"foo\", t = \"bar\"\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"paper\", t = \"title\"\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<h3 id=\"\u8d4e\u91d1\u4fe1\">\u8d4e\u91d1\u4fe1<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-9\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e24\u4e2a\u5b57\u7b26\u4e32\uff1a<code>ransomNote<\/code> \u548c <code>magazine<\/code> \uff0c\u5224\u65ad <code>ransomNote<\/code> \u80fd\u4e0d\u80fd\u7531 <code>magazine<\/code> \u91cc\u9762\u7684\u5b57\u7b26\u6784\u6210\u3002<\/p>\n<p>\u5982\u679c\u53ef\u4ee5\uff0c\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\u8fd4\u56de <code>false<\/code> \u3002<\/p>\n<p><code>magazine<\/code> \u4e2d\u7684\u6bcf\u4e2a\u5b57\u7b26\u53ea\u80fd\u5728 <code>ransomNote<\/code> \u4e2d\u4f7f\u7528\u4e00\u6b21\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u53ef\u4ee5\u8003\u8651\u4f18\u5316\u7684\u5730\u65b9,\u7b2c\u4e00\u4e2a\u5c06\u5b57\u7b26\u8f6c\u6362\u4e3a\u6570\u5b57,\u7b2c\u4e8c\u4e2a\u662f\u9006\u5411\u5224\u65ad,\u4e0d\u5fc5\u53bb\u7edf\u8ba1ransomNote\u7684\u5b57\u7b26\u51fa\u73b0\u6570\u91cf,\u800c\u662f\u51cf\u53bbmagazine\u4e2d\u7684\u5b57\u7b26\u51fa\u73b0\u6b21\u6570,\u8fd9\u6837\u5b50\u53ef\u4ee5\u8282\u7701\u7a7a\u95f4<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-9\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n#include &lt;string&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    bool canConstruct(string ransomNote, string magazine) {\n        unordered_map&lt;char, int&gt; rans;\n        unordered_map&lt;char,int&gt; mag;\n\n        for (int i = 0; i &lt; magazine.size(); i++)\n        {\n            mag[magazine[i]]++;\n        }\n\n        for (int i = 0; i &lt; ransomNote.size(); i++)\n        {\n            if (++rans[ransomNote[i]] &gt; mag[ransomNote[i]])\n            {\n                return false;\n            }\n        }\n\n        return true;\n    }\n};\n\nclass Solution {\npublic:\n    bool canConstruct(string ransomNote, string magazine) {\n        if (ransomNote.size() &gt; magazine.size()) {\n            return false;\n        }\n        vector&lt;int&gt; cnt(26);\n        for (auto&amp; c : magazine) {\n            cnt[c - 'a']++;\n        }\n        for (auto&amp; c : ransomNote) {\n            cnt[c - 'a']--;\n            if (cnt[c - 'a'] &lt; 0) {\n                return false;\n            }\n        }\n        return true;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aransomNote = \"a\", magazine = \"b\"\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aransomNote = \"aa\", magazine = \"ab\"\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aransomNote = \"aa\", magazine = \"aab\"\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<h3 id=\"\u5355\u8bcd\u89c4\u5f8b\">\u5355\u8bcd\u89c4\u5f8b<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-10\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u79cd\u89c4\u5f8b <code>pattern<\/code> \u548c\u4e00\u4e2a\u5b57\u7b26\u4e32 <code>s<\/code> \uff0c\u5224\u65ad <code>s<\/code> \u662f\u5426\u9075\u5faa\u76f8\u540c\u7684\u89c4\u5f8b\u3002<\/p>\n<p>\u8fd9\u91cc\u7684 <strong>\u9075\u5faa<\/strong> \u6307\u5b8c\u5168\u5339\u914d\uff0c\u4f8b\u5982\uff0c <code>pattern<\/code> \u91cc\u7684\u6bcf\u4e2a\u5b57\u6bcd\u548c\u5b57\u7b26\u4e32 <code>s<\/code> \u4e2d\u7684\u6bcf\u4e2a\u975e\u7a7a\u5355\u8bcd\u4e4b\u95f4\u5b58\u5728\u7740\u53cc\u5411\u8fde\u63a5\u7684\u5bf9\u5e94\u89c4\u5f8b\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-2\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u89c1\u4ee3\u7801\u4e2d\u6ce8\u91ca<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-10\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;string&gt;\n#include &lt;unordered_map&gt;\n#include &lt;sstream&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    bool wordPattern(string pattern, string s) {\n\n\n        s.append(1, ' ');\n        unordered_map&lt;char, string&gt; word_pattern;\n        unordered_map&lt;string, char&gt; word_pattern1;\n        int index = 0;\n        int num = 0;\n        string word;\n        \/\/abc hh ab\n        int i = 0;\n        for (auto&amp; ch : s)\n        {\n            if (ch == ' ')\n            {\n                \n                word = s.substr(index, num);\n                cout &lt;&lt; \"index\u73b0\u5728\u662f \" &lt;&lt; index;\n                index = index + num + 1; \/\/\u8fd9\u91cc\u7684 +1 \u5c31\u662f\u8981\u628a\u7a7a\u683c\u7684\u957f\u5ea6\u4e5f\u7b97\u4e0a\n                cout &lt;&lt; \" \u53d8\u6362\u4e3a\u540e\u662f \" &lt;&lt; index &lt;&lt; endl;\n\n                num = -1; \/\/\u5f53\u51fa\u73b0\u7b2c\u4e00\u4e2a\u7a7a\u767d\u540e,\u4e0e\u4e0b\u9762\u7684num++\u62b5\u6d88 \u4e5f\u53ef\u4ee5\u4f7f\u7528continue.\n\n                cout &lt;&lt; word_pattern.count(pattern[i]) &lt;&lt; \"\u76f8\u5bf9\u4e8e\u7684word = \" &lt;&lt; word &lt;&lt; endl;\n                \n\n                if ( ((word_pattern.count(pattern[i])) &amp;&amp; (word_pattern[pattern[i]] != word)) || ( word_pattern1.count(word) &amp;&amp; word_pattern1[word] != pattern[i]))\n                {\n                    \/\/cout &lt;&lt; s &lt;&lt; \"a\" &lt;&lt; endl;\n                    return false;\n                }\n                word_pattern[pattern[i]] = word;\n                word_pattern1[word] = pattern[i];\n\n                cout &lt;&lt; \"i\u7684\u503c\u662f i=\" &lt;&lt; i &lt;&lt; endl;\n                i++;\n            }\n            num++;\n        }\n\n        if (i != pattern.size())\n        {\n            return false;\n        }\n\n        return true;\n    }\n};\n\nclass Solution2 {\npublic:\n    bool wordPattern(string pattern, string str) {\n        unordered_map&lt;char, string&gt; map;\n        unordered_map&lt;string, char&gt; rmap;\n        stringstream ss(str); string s;\n        for (char c : pattern) {\n            \/\/!(ss &gt;&gt; s) \u8fd9\u884c\u8bed\u53e5\u5224\u65ad\u662f\u5426\u5b58\u5728\u5355\u8bcd\u7684\u957f\u5ea6\u6bd4\u5b57\u7b26\u4e32\u957f\n            \/\/\u5f53 ss \u4e2d\u6ca1\u6709\u66f4\u591a\u7684\u5355\u8bcd\u65f6\uff0css &gt;&gt; s \u64cd\u4f5c\u4f1a\u5931\u8d25\uff0c\n            \/\/\u4f46\u5faa\u73af\u4ecd\u7136\u4f1a\u7ee7\u7eed\u5c1d\u8bd5\u5904\u7406 pattern \u4e2d\u7684\u4e0b\u4e00\u4e2a\u5b57\u7b26 \"g\"\u3002\u7136\u800c\uff0c\u7531\u4e8e s \u4ecd\u7136\u662f\u4e4b\u524d\u6700\u540e\u4e00\u4e2a\u63d0\u53d6\u7684\u5355\u8bcd \"dog\"\n            \/\/\u8fd9\u4f1a\u5bfc\u81f4rmap \u7684\u68c0\u67e5\u5931\u8d25\n            if (!(ss &gt;&gt; s) || (map.count(c) == 1 &amp;&amp; map[c] != s) || (rmap.count(s) == 1 &amp;&amp; rmap[s] != c)) return false;\n            map[c] = s; rmap[s] = c;\n        }\n        \/\/\u4e0b\u9762\u8fd9\u884c\u4ee3\u7801\u5224\u65ad\u662f\u5426\u5b57\u7b26\u4e32\u6bd4\u5355\u8bcd\u957f\n        \/\/\u56e0\u4e3a\u8fd9\u4e2a\u65b9\u6cd5\u662f\u904d\u5386\u5355\u8bcd,\u6240\u4ee5\u6700\u540e\u8981\u5224\u65ad\u662f\u5426\u5b57\u7b26\u4e32\u6bd4\u5355\u8bcd\u957f\n        return (ss &gt;&gt; s) ? false : true;\n    }\n};\n\n\n\nint main()\n{\n    string pattern = \"abba\", s = \"dog cat cat dog\";\n    Solution sol;\n    if (sol.wordPattern(pattern, s))\n    {\n        cout &lt;&lt; \"true\" &lt;&lt; endl;\n    }\n    else\n    {\n        cout &lt;&lt; \"false\" &lt;&lt; endl;\n    }\n}\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: pattern = \"abba\", s = \"dog cat cat dog\"\n\u8f93\u51fa: true\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165:pattern = \"abba\", s = \"dog cat cat fish\"\n\u8f93\u51fa: false\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3:<\/strong><\/p>\n<pre><code>\u8f93\u5165: pattern = \"aaaa\", s = \"dog cat cat dog\"\n\u8f93\u51fa: false\n<\/code><\/pre>\n<h3 id=\"\u5b57\u6bcd\u5f02\u4f4d\u8bcd\u5206\u7ec4\">\u5b57\u6bcd\u5f02\u4f4d\u8bcd\u5206\u7ec4<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-11\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32\u6570\u7ec4\uff0c\u8bf7\u4f60\u5c06 <strong>\u5b57\u6bcd\u5f02\u4f4d\u8bcd<\/strong> \u7ec4\u5408\u5728\u4e00\u8d77\u3002\u53ef\u4ee5\u6309\u4efb\u610f\u987a\u5e8f\u8fd4\u56de\u7ed3\u679c\u5217\u8868\u3002<\/p>\n<p><strong>\u5b57\u6bcd\u5f02\u4f4d\u8bcd<\/strong> \u662f\u7531\u91cd\u65b0\u6392\u5217\u6e90\u5355\u8bcd\u7684\u6240\u6709\u5b57\u6bcd\u5f97\u5230\u7684\u4e00\u4e2a\u65b0\u5355\u8bcd\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-3\">\u9898\u76ee\u5206\u6790<\/h4>\n<ol start=\"\">\n<li><strong>\u521d\u59cb\u5316\u81ea\u5b9a\u4e49\u54c8\u5e0c\u51fd\u6570<\/strong>\uff1a\u521b\u5efa\u4e00\u4e2a\u53ef\u4ee5\u54c8\u5e0c<code>array&lt;int, 26&gt;<\/code>\u7c7b\u578b\u7684\u51fd\u6570<code>arrayHash<\/code>\u3002<\/li>\n<li><strong>\u521b\u5efa\u54c8\u5e0c\u8868<\/strong>\uff1a\u521b\u5efa\u4e00\u4e2a<code>unordered_map<\/code>\uff0c\u952e\u662f<code>array&lt;int, 26&gt;<\/code>\uff0c\u503c\u662f<code>vector&lt;string&gt;<\/code>\u3002<\/li>\n<li><strong>\u904d\u5386\u5b57\u7b26\u4e32\u6570\u7ec4<\/strong>\uff1a\u5bf9\u4e8e\u6bcf\u4e2a\u5b57\u7b26\u4e32\uff0c\u8ba1\u7b97\u5176\u5b57\u6bcd\u8ba1\u6570\u3002\n<ul>\n<li>\u5bf9\u4e8e \u201ceat\u201d\uff1a\u8ba1\u6570\u6570\u7ec4\u4e3a <code>[1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]<\/code>\uff0c\u8868\u793a \u2018a\u2019 \u51fa\u73b0\u4e861\u6b21\uff0c\u2018e\u2019 \u51fa\u73b0\u4e861\u6b21\uff0c\u2018t\u2019 \u51fa\u73b0\u4e861\u6b21\u3002<\/li>\n<li>\u5bf9\u4e8e \u201ctea\u201d\uff1a\u8ba1\u6570\u6570\u7ec4\u4e0e \u201ceat\u201d \u76f8\u540c\u3002<\/li>\n<li>\u5bf9\u4e8e \u201ctan\u201d\uff1a\u8ba1\u6570\u6570\u7ec4\u4e3a <code>[1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]<\/code>\uff0c\u4e0e \u201ceat\u201d \u548c \u201ctea\u201d \u76f8\u540c\u3002<\/li>\n<li>\u5bf9\u4e8e \u201cate\u201d\uff1a\u8ba1\u6570\u6570\u7ec4\u4e0e \u201ceat\u201d\u3001\u201ctea\u201d \u548c \u201ctan\u201d \u76f8\u540c\u3002<\/li>\n<li>\u5bf9\u4e8e \u201cnat\u201d\uff1a\u8ba1\u6570\u6570\u7ec4\u4e3a <code>[1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0]<\/code>\u3002<\/li>\n<li>\u5bf9\u4e8e \u201cbat\u201d\uff1a\u8ba1\u6570\u6570\u7ec4\u4e3a <code>[1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]<\/code>\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u586b\u5145\u54c8\u5e0c\u8868<\/strong>\uff1a\n<ul>\n<li>\u5bf9\u4e8e \u201ceat\u201d\u3001\u201ctea\u201d\u3001\u201cate\u201d\uff1a\u5b83\u4eec\u5171\u4eab\u76f8\u540c\u7684\u8ba1\u6570\u6570\u7ec4\uff0c\u6240\u4ee5\u5b83\u4eec\u4f1a\u88ab\u6dfb\u52a0\u5230\u540c\u4e00\u4e2a<code>vector&lt;string&gt;<\/code>\u4e2d\u3002<\/li>\n<li>\u5bf9\u4e8e \u201ctan\u201d\u3001\u201cnat\u201d\uff1a\u5b83\u4eec\u4e5f\u5171\u4eab\u76f8\u540c\u7684\u8ba1\u6570\u6570\u7ec4\uff0c\u6240\u4ee5\u5b83\u4eec\u4f1a\u88ab\u6dfb\u52a0\u5230\u540c\u4e00\u4e2a<code>vector&lt;string&gt;<\/code>\u4e2d\u3002<\/li>\n<li>\u5bf9\u4e8e \u201cbat\u201d\uff1a\u5b83\u6709\u4e00\u4e2a\u72ec\u7279\u7684\u8ba1\u6570\u6570\u7ec4\uff0c\u6240\u4ee5\u5b83\u4f1a\u88ab\u6dfb\u52a0\u5230\u4e00\u4e2a\u65b0\u7684<code>vector&lt;string&gt;<\/code>\u4e2d\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u6784\u5efa\u7ed3\u679c\u6570\u7ec4<\/strong>\uff1a\u904d\u5386\u54c8\u5e0c\u8868\uff0c\u5c06\u6bcf\u4e2a<code>vector&lt;string&gt;<\/code>\u6dfb\u52a0\u5230\u7ed3\u679c\u6570\u7ec4<code>ans<\/code>\u4e2d\u3002<\/li>\n<\/ol>\n<pre><code class=\"language-cpp\" lang=\"cpp\">[&amp;](size_t acc, int num) { return (acc &lt;&lt; 1) ^ fn(num); }\n<\/code><\/pre>\n<ul>\n<li><strong>\u6355\u83b7\u5217\u8868<\/strong>\uff1a\u8fd9\u91cc\u4f7f\u7528\u4e86<code>&amp;<\/code>\uff0c\u8868\u793a\u4ee5\u5f15\u7528\u7684\u65b9\u5f0f\u6355\u83b7\u5916\u90e8\u4f5c\u7528\u57df\u4e2d\u7684\u6240\u6709\u53d8\u91cf\u3002\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\uff0c\u6355\u83b7\u5217\u8868\u4e3a\u7a7a\uff0c\u56e0\u4e3aLambda\u8868\u8fbe\u5f0f\u6ca1\u6709\u4f7f\u7528\u5916\u90e8\u4f5c\u7528\u57df\u4e2d\u7684\u4efb\u4f55\u53d8\u91cf\u3002<\/li>\n<li><strong>\u53c2\u6570\u5217\u8868<\/strong>\uff1a<code>size_t acc, int num<\/code>\u3002\u8fd9\u4e2aLambda\u8868\u8fbe\u5f0f\u63a5\u53d7\u4e24\u4e2a\u53c2\u6570\uff1a<code>acc<\/code>\u662f\u4e00\u4e2a<code>size_t<\/code>\u7c7b\u578b\u7684\u7d2f\u79ef\u503c\uff0c<code>num<\/code>\u662f\u5f53\u524d\u8981\u5904\u7406\u7684\u6570\u7ec4\u5143\u7d20\uff0c\u662f\u4e00\u4e2a<code>int<\/code>\u7c7b\u578b\u3002<\/li>\n<li><strong>\u8fd4\u56de\u7c7b\u578b<\/strong>\uff1a\u8fd9\u91cc\u7701\u7565\u4e86\u8fd4\u56de\u7c7b\u578b\uff0c\u56e0\u4e3a\u7f16\u8bd1\u5668\u53ef\u4ee5\u81ea\u52a8\u63a8\u5bfc\u51fa\u8fd4\u56de\u7c7b\u578b\u662f<code>size_t<\/code>\u3002<\/li>\n<li><strong>\u51fd\u6570\u4f53<\/strong>\uff1a<code>return (acc &lt;&lt; 1) ^ fn(num);<\/code>\u3002\u51fd\u6570\u4f53\u5b9a\u4e49\u4e86\u5982\u4f55\u5c06\u5f53\u524d\u5143\u7d20<code>num<\/code>\u7684\u54c8\u5e0c\u503c\u7d2f\u79ef\u5230\u7d2f\u79ef\u503c<code>acc<\/code>\u4e0a\u3002\u9996\u5148\uff0c\u5c06<code>acc<\/code>\u5de6\u79fb\u4e00\u4f4d\uff0c\u7136\u540e\u5c06<code>num<\/code>\u901a\u8fc7<code>fn<\/code>\uff08\u5373<code>hash&lt;int&gt;<\/code>\uff09\u8fdb\u884c\u54c8\u5e0c\u5904\u7406\uff0c\u6700\u540e\u5c06\u8fd9\u4e24\u4e2a\u7ed3\u679c\u8fdb\u884c\u5f02\u6216\u8fd0\u7b97\uff0c\u5f97\u5230\u65b0\u7684\u7d2f\u79ef\u503c\u5e76\u8fd4\u56de\u3002<\/li>\n<\/ul>\n<p>\u8fd9\u91cc\u662f<code>arrayHash<\/code>\u51fd\u6570\u7684\u8be6\u7ec6\u89e3\u91ca\uff1a<\/p>\n<ul>\n<li><code>[fn = hash&lt;int&gt;{}]<\/code>\uff1a\u8fd9\u662f\u4e00\u4e2a\u6355\u83b7\u5217\u8868\uff0c\u5b83\u6355\u83b7\u4e86\u4e00\u4e2a\u9ed8\u8ba4\u6784\u9020\u7684<code>hash&lt;int&gt;<\/code>\u5bf9\u8c61\u3002<code>hash&lt;int&gt;<\/code>\u662fC++\u6807\u51c6\u5e93\u4e2d\u7684\u4e00\u4e2a\u6a21\u677f\u7c7b\uff0c\u5b83\u63d0\u4f9b\u4e86\u5bf9<code>int<\/code>\u7c7b\u578b\u7684\u9ed8\u8ba4\u54c8\u5e0c\u51fd\u6570\u3002\u6355\u83b7\u8fd9\u4e2a\u5bf9\u8c61\u662f\u4e3a\u4e86\u5728Lambda\u8868\u8fbe\u5f0f\u4e2d\u4f7f\u7528\u5b83\u6765\u54c8\u5e0c\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e2a\u6574\u6570\u3002<\/li>\n<li><code>(const array&lt;int, 26&gt;&amp; arr) -&gt; size_t<\/code>\uff1a\u8fd9\u662fLambda\u8868\u8fbe\u5f0f\u7684\u53c2\u6570\u5217\u8868\u548c\u8fd4\u56de\u7c7b\u578b\u3002\u5b83\u63a5\u53d7\u4e00\u4e2a\u5e38\u91cf\u5f15\u7528\u7684<code>array&lt;int, 26&gt;<\/code>\u5bf9\u8c61\uff0c\u5e76\u8fd4\u56de\u4e00\u4e2a<code>size_t<\/code>\u7c7b\u578b\u7684\u54c8\u5e0c\u503c\u3002<\/li>\n<li><code>accumulate(arr.begin(), arr.end(), 0u, [&amp;](size_t acc, int num) { ... })<\/code>\uff1a\u8fd9\u662fC++\u6807\u51c6\u5e93\u4e2d\u7684<code>accumulate<\/code>\u51fd\u6570\uff0c\u5b83\u7528\u4e8e\u5bf9\u6570\u7ec4\u4e2d\u7684\u6240\u6709\u5143\u7d20\u8fdb\u884c\u7d2f\u79ef\u64cd\u4f5c\u3002<code>accumulate<\/code>\u51fd\u6570\u7684\u53c2\u6570\u5305\u62ec\u8fed\u4ee3\u5668\u7684\u8d77\u59cb\u548c\u7ed3\u675f\u4f4d\u7f6e\u3001\u521d\u59cb\u7d2f\u79ef\u503c\uff08\u5728\u8fd9\u91cc\u662f<code>0u<\/code>\uff0c\u8868\u793a\u4e00\u4e2a\u65e0\u7b26\u53f7\u76840\uff09\uff0c\u4ee5\u53ca\u4e00\u4e2a\u4e8c\u5143Lambda\u8868\u8fbe\u5f0f\uff0c\u7528\u4e8e\u5b9a\u4e49\u5982\u4f55\u7d2f\u79ef\u6bcf\u4e2a\u5143\u7d20\u3002<\/li>\n<li><code>return (acc &lt;&lt; 1) ^ fn(num);<\/code>\uff1a\u5728<code>accumulate<\/code>\u7684Lambda\u8868\u8fbe\u5f0f\u4e2d\uff0c\u6bcf\u4e2a\u5143\u7d20\u7684\u54c8\u5e0c\u503c\u662f\u901a\u8fc7\u5c06\u7d2f\u79ef\u503c<code>acc<\/code>\u5de6\u79fb\u4e00\u4f4d\uff08<code>&lt;&lt; 1<\/code>\uff09\u7136\u540e\u4e0e\u5f53\u524d\u5143\u7d20\u7684\u54c8\u5e0c\u503c\uff08\u901a\u8fc7\u8c03\u7528<code>fn(num)<\/code>\u5f97\u5230\uff09\u8fdb\u884c\u5f02\u6216\u8fd0\u7b97\uff08<code>^<\/code>\uff09\u6765\u8ba1\u7b97\u7684\u3002\u8fd9\u79cd\u64cd\u4f5c\u5c06\u6bcf\u4e2a\u5143\u7d20\u7684\u54c8\u5e0c\u503c\u7ed3\u5408\u5230\u7d2f\u79ef\u503c\u4e2d\uff0c\u751f\u6210\u4e00\u4e2a\u6700\u7ec8\u7684\u54c8\u5e0c\u503c\u3002<\/li>\n<\/ul>\n<p>\u8fd9\u4e2a\u81ea\u5b9a\u4e49\u54c8\u5e0c\u51fd\u6570\u662f\u4e3a\u4e86\u5c06<code>array&lt;int, 26&gt;<\/code>\u7c7b\u578b\u7684\u952e\u8f6c\u6362\u4e3a<code>size_t<\/code>\u7c7b\u578b\u7684\u54c8\u5e0c\u503c\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u5728<code>unordered_map<\/code>\u4e2d\u4f7f\u7528\u8fd9\u79cd\u7c7b\u578b\u7684\u952e\u4e86\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-11\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    vector&lt;vector&lt;string&gt;&gt; groupAnagrams(vector&lt;string&gt;&amp; strs) {\n        \/\/ \u81ea\u5b9a\u4e49\u5bf9 array&lt;int, 26&gt; \u7c7b\u578b\u7684\u54c8\u5e0c\u51fd\u6570\n        auto arrayHash = [fn = hash&lt;int&gt;{}](const array&lt;int, 26&gt;&amp; arr) -&gt; size_t {\n            return accumulate(arr.begin(), arr.end(), 0u, [&amp;](size_t acc, int num) {\n                return (acc &lt;&lt; 1) ^ fn(num);\n                });\n            };\n\n        unordered_map&lt;array&lt;int, 26&gt;, vector&lt;string&gt;, decltype(arrayHash)&gt; mp(0, arrayHash);\n        for (string&amp; str : strs) {\n            array&lt;int, 26&gt; counts{};\n            int length = str.length();\n            for (int i = 0; i &lt; length; ++i) {\n                counts[str[i] - 'a']++;\n            }\n            mp[counts].emplace_back(str);\n        }\n        vector&lt;vector&lt;string&gt;&gt; ans;\n        for (auto it = mp.begin(); it != mp.end(); ++it) {\n            ans.emplace_back(it-&gt;second);\n        }\n        return ans;\n    }\n};\n\n\/\/\u5c06\u5b57\u7b26\u4e32\u6392\u5e8f\u540e\u52a0\u5165\u54c8\u5e0c\u8868\u4e2d\nclass Solution {\npublic:\n    vector&lt;vector&lt;string&gt;&gt; groupAnagrams(vector&lt;string&gt;&amp; strs) {\n        unordered_map&lt;string, vector&lt;string&gt;&gt; m;\n        for (auto&amp; s : strs) {\n            string sorted_s = s;\n            ranges::sort(sorted_s);\n            m[sorted_s].push_back(s); \/\/ sorted_s \u76f8\u540c\u7684\u5b57\u7b26\u4e32\u5206\u5230\u540c\u4e00\u7ec4\n        }\n        vector&lt;vector&lt;string&gt;&gt; ans;\n        ans.reserve(m.size()); \/\/ \u9884\u5206\u914d\u7a7a\u95f4\n        for (auto&amp; [_, value] : m) {\n            ans.push_back(value);\n        }\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: strs = [\"eat\", \"tea\", \"tan\", \"ate\", \"nat\", \"bat\"]\n\u8f93\u51fa: [[\"bat\"],[\"nat\",\"tan\"],[\"ate\",\"eat\",\"tea\"]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: strs = [\"\"]\n\u8f93\u51fa: [[\"\"]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3:<\/strong><\/p>\n<pre><code>\u8f93\u5165: strs = [\"a\"]\n\u8f93\u51fa: [[\"a\"]]\n<\/code><\/pre>\n<h3 id=\"\u6700\u957f\u8fde\u7eed\u5e8f\u5217\">\u6700\u957f\u8fde\u7eed\u5e8f\u5217<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-12\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u672a\u6392\u5e8f\u7684\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \uff0c\u627e\u51fa\u6570\u5b57\u8fde\u7eed\u7684\u6700\u957f\u5e8f\u5217\uff08\u4e0d\u8981\u6c42\u5e8f\u5217\u5143\u7d20\u5728\u539f\u6570\u7ec4\u4e2d\u8fde\u7eed\uff09\u7684\u957f\u5ea6\u3002<\/p>\n<p>\u8bf7\u4f60\u8bbe\u8ba1\u5e76\u5b9e\u73b0\u65f6\u95f4\u590d\u6742\u5ea6\u4e3a <code>O(n)<\/code> \u7684\u7b97\u6cd5\u89e3\u51b3\u6b64\u95ee\u9898\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-4\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6211\u7684\u89e3\u6cd5\u662f\u627e\u5230\u4e00\u4e2a\u6570,\u7136\u540e\u5411\u4e24\u8fb9\u5bfb\u627e,\u627e\u5230\u4ee5\u540e\u76f4\u63a5\u5220\u9664<\/p>\n<p>\u5b98\u65b9\u7684\u89e3\u6cd5\u662f\u9996\u5148\u5224\u65ad\u4e00\u4e2a\u6570\u7684\u524d\u4e00\u4f4d\u662f\u5426\u5b58\u5728\uff0c\u7136\u540e\u8fdb\u5165\u5faa\u73af\uff0c\u5f00\u59cb\u5bfb\u627e\u5f53\u524d\u6570\u7684\u540e\u4e00\u4f4d\u662f\u5426\u5b58\u5728<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-12\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;unordered_set&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int longestConsecutive(vector&lt;int&gt;&amp; nums) {\n        if (nums.size() == 0)\n        {\n            return 0;\n        }\n\n        \/\/unordered_set&lt;int&gt; store;\n\n        unordered_set&lt;int&gt; store(nums.begin(), nums.end());\n\n        \/*for (const int&amp; num : nums) {\n            store.insert(num);\n        }*\/\n        int maxlength = 0;\n\n        for (int num : nums)\n        {\n            if (store.find(num) != store.end())\n            {\n                store.erase(num);\n                int length = 1;\n                int left = num - 1;\n                int right = num + 1;\n\n                while (store.find(left) != store.end())\n                {\n                    store.erase(left);\n                    left--;\n                    length++;\n                }\n\n                while (store.find(right) != store.end())\n                {\n                    store.erase(right);\n                    right++;\n                    length++;\n                }\n\n                maxlength = max(maxlength, length);\n            }\n        }\n\n        return maxlength;\n    }\n};\n\nclass Solution {\npublic:\n    int longestConsecutive(vector&lt;int&gt;&amp; nums) {\n        unordered_set&lt;int&gt; num_set;\n        for (const int&amp; num : nums) {\n            num_set.insert(num);\n        }\n\n        int longestStreak = 0;\n\n        for (const int&amp; num : num_set) {\n            if (!num_set.count(num - 1)) { \/\/\u9632\u6b62\u91cd\u590d\uff0c\u76f4\u63a5\u5bfb\u627e\u5f00\u5934\u7684\u5143\u7d20\n                int currentNum = num;\n                int currentStreak = 1;\n\n                while (num_set.count(currentNum + 1)) {\n                    currentNum += 1;\n                    currentStreak += 1;\n                }\n\n                longestStreak = max(longestStreak, currentStreak);\n            }\n        }\n\n        return longestStreak;\n    }\n};\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [100,4,200,1,3,2]\n\u8f93\u51fa\uff1a4\n\u89e3\u91ca\uff1a\u6700\u957f\u6570\u5b57\u8fde\u7eed\u5e8f\u5217\u662f [1, 2, 3, 4]\u3002\u5b83\u7684\u957f\u5ea6\u4e3a 4\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [0,3,7,2,5,8,4,6,0,1]\n\u8f93\u51fa\uff1a9\n<\/code><\/pre>\n<h3 id=\"\u968f\u673a\u94fe\u8868\u7684\u590d\u5236\">\u968f\u673a\u94fe\u8868\u7684\u590d\u5236<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-13\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u957f\u5ea6\u4e3a <code>n<\/code> \u7684\u94fe\u8868\uff0c\u6bcf\u4e2a\u8282\u70b9\u5305\u542b\u4e00\u4e2a\u989d\u5916\u589e\u52a0\u7684\u968f\u673a\u6307\u9488 <code>random<\/code> \uff0c\u8be5\u6307\u9488\u53ef\u4ee5\u6307\u5411\u94fe\u8868\u4e2d\u7684\u4efb\u4f55\u8282\u70b9\u6216\u7a7a\u8282\u70b9\u3002<\/p>\n<p>\u6784\u9020\u8fd9\u4e2a\u94fe\u8868\u7684 <strong><a href=\"https:\/\/baike.baidu.com\/item\/\u6df1\u62f7\u8d1d\/22785317?fr=aladdin\">\u6df1\u62f7\u8d1d<\/a><\/strong>\u3002 \u6df1\u62f7\u8d1d\u5e94\u8be5\u6b63\u597d\u7531 <code>n<\/code> \u4e2a <strong>\u5168\u65b0<\/strong> \u8282\u70b9\u7ec4\u6210\uff0c\u5176\u4e2d\u6bcf\u4e2a\u65b0\u8282\u70b9\u7684\u503c\u90fd\u8bbe\u4e3a\u5176\u5bf9\u5e94\u7684\u539f\u8282\u70b9\u7684\u503c\u3002\u65b0\u8282\u70b9\u7684 <code>next<\/code> \u6307\u9488\u548c <code>random<\/code> \u6307\u9488\u4e5f\u90fd\u5e94\u6307\u5411\u590d\u5236\u94fe\u8868\u4e2d\u7684\u65b0\u8282\u70b9\uff0c\u5e76\u4f7f\u539f\u94fe\u8868\u548c\u590d\u5236\u94fe\u8868\u4e2d\u7684\u8fd9\u4e9b\u6307\u9488\u80fd\u591f\u8868\u793a\u76f8\u540c\u7684\u94fe\u8868\u72b6\u6001\u3002<strong>\u590d\u5236\u94fe\u8868\u4e2d\u7684\u6307\u9488\u90fd\u4e0d\u5e94\u6307\u5411\u539f\u94fe\u8868\u4e2d\u7684\u8282\u70b9<\/strong> \u3002<\/p>\n<p>\u4f8b\u5982\uff0c\u5982\u679c\u539f\u94fe\u8868\u4e2d\u6709 <code>X<\/code> \u548c <code>Y<\/code> \u4e24\u4e2a\u8282\u70b9\uff0c\u5176\u4e2d <code>X.random --&gt; Y<\/code> \u3002\u90a3\u4e48\u5728\u590d\u5236\u94fe\u8868\u4e2d\u5bf9\u5e94\u7684\u4e24\u4e2a\u8282\u70b9 <code>x<\/code> \u548c <code>y<\/code> \uff0c\u540c\u6837\u6709 <code>x.random --&gt; y<\/code> \u3002<\/p>\n<p>\u8fd4\u56de\u590d\u5236\u94fe\u8868\u7684\u5934\u8282\u70b9\u3002<\/p>\n<p>\u7528\u4e00\u4e2a\u7531 <code>n<\/code> \u4e2a\u8282\u70b9\u7ec4\u6210\u7684\u94fe\u8868\u6765\u8868\u793a\u8f93\u5165\/\u8f93\u51fa\u4e2d\u7684\u94fe\u8868\u3002\u6bcf\u4e2a\u8282\u70b9\u7528\u4e00\u4e2a <code>[val, random_index]<\/code> \u8868\u793a\uff1a<\/p>\n<ul>\n<li><code>val<\/code>\uff1a\u4e00\u4e2a\u8868\u793a <code>Node.val<\/code> \u7684\u6574\u6570\u3002<\/li>\n<li><code>random_index<\/code>\uff1a\u968f\u673a\u6307\u9488\u6307\u5411\u7684\u8282\u70b9\u7d22\u5f15\uff08\u8303\u56f4\u4ece <code>0<\/code> \u5230 <code>n-1<\/code>\uff09\uff1b\u5982\u679c\u4e0d\u6307\u5411\u4efb\u4f55\u8282\u70b9\uff0c\u5219\u4e3a <code>null<\/code> \u3002<\/li>\n<\/ul>\n<p>\u4f60\u7684\u4ee3\u7801 <strong>\u53ea<\/strong> \u63a5\u53d7\u539f\u94fe\u8868\u7684\u5934\u8282\u70b9 <code>head<\/code> \u4f5c\u4e3a\u4f20\u5165\u53c2\u6570\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-5\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8fd9\u91cc\u7684\u54c8\u5e0c\u8868\u79c0\u5230\u6211\u4e86,\u4ee3\u7801\u76f4\u89c2\u7b80\u6d01.<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-13\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n\n\nusing namespace std;\n\nclass Node {\npublic:\n    int val;\n    Node* next;\n    Node* random;\n\n    Node(int _val) {\n        val = _val;\n        next = NULL;\n        random = NULL;\n    }\n};\n\nclass Solution {\npublic:\n    Node* copyRandomList(Node* head) {\n        if (head == nullptr) return nullptr;\n\n        \/\/ \u521b\u5efa\u65b0\u8282\u70b9\uff0c\u540c\u65f6\u5efa\u7acb\u539f\u59cb\u8282\u70b9\u5230\u590d\u5236\u8282\u70b9\u7684\u6620\u5c04\n        unordered_map&lt;Node*, Node*&gt; map;\n        Node* current = head;\n        while (current != nullptr) {\n            map[current] = new Node(current-&gt;val);\n            current = current-&gt;next;\n        }\n\n        \/\/ \u8bbe\u7f6e\u590d\u5236\u8282\u70b9\u7684next\u548crandom\u6307\u9488\n        current = head;\n        while (current != nullptr) {\n            map[current]-&gt;next = map[current-&gt;next];\n            map[current]-&gt;random = map[current-&gt;random];\n            current = current-&gt;next;\n        }\n\n        return map[head];\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/01\/09\/e1.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/01\/09\/e1.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [[7,null],[13,0],[11,4],[10,2],[1,0]]\n\u8f93\u51fa\uff1a[[7,null],[13,0],[11,4],[10,2],[1,0]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/01\/09\/e2.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/01\/09\/e2.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [[1,1],[2,1]]\n\u8f93\u51fa\uff1a[[1,1],[2,1]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<p><strong><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/01\/09\/e3.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/01\/09\/e3.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [[3,null],[3,0],[3,null]]\n\u8f93\u51fa\uff1a[[3,null],[3,0],[3,null]]\n<\/code><\/pre>\n<h3 id=\"\u7f3a\u5931\u7684\u7b2c\u4e00\u4e2a\u6b63\u6570\">\u7f3a\u5931\u7684\u7b2c\u4e00\u4e2a\u6b63\u6570<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-14\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u672a\u6392\u5e8f\u7684\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \uff0c\u8bf7\u4f60\u627e\u51fa\u5176\u4e2d\u6ca1\u6709\u51fa\u73b0\u7684\u6700\u5c0f\u7684\u6b63\u6574\u6570\u3002<\/p>\n<p>\u8bf7\u4f60\u5b9e\u73b0\u65f6\u95f4\u590d\u6742\u5ea6\u4e3a <code>O(n)<\/code> \u5e76\u4e14\u53ea\u4f7f\u7528\u5e38\u6570\u7ea7\u522b\u989d\u5916\u7a7a\u95f4\u7684\u89e3\u51b3\u65b9\u6848\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-6\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><a href=\"https:\/\/leetcode.cn\/problems\/first-missing-positive\/solutions\/304743\/que-shi-de-di-yi-ge-zheng-shu-by-leetcode-solution\/?envType=study-plan-v2&amp;envId=top-100-liked\">41. \u7f3a\u5931\u7684\u7b2c\u4e00\u4e2a\u6b63\u6570 &#8211; \u529b\u6263\uff08LeetCode\uff09<\/a><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-14\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    int firstMissingPositive(vector&lt;int&gt;&amp; nums) {\n\n        int n = nums.size();\n\n        for (auto&amp; x : nums)\n        {\n            if (x &lt;= 0)\n            {\n                x = n + 1;\n            }\n        }\n\n        for (int i = 0; i &lt; n; i++)\n        {\n            int num = abs(nums[i]);\n            if (num &lt;= n)\n            {\n                nums[num - 1] = -abs(nums[num - 1]);\n            }\n        }\n\n        for (int i = 0; i &lt; n; i++)\n        {\n            if (nums[i] &gt; 0)\n            {\n                return i + 1;\n            }\n        }\n\n        return n + 1;\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,2,0]\n\u8f93\u51fa\uff1a3\n\u89e3\u91ca\uff1a\u8303\u56f4 [1,2] \u4e2d\u7684\u6570\u5b57\u90fd\u5728\u6570\u7ec4\u4e2d\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [3,4,-1,1]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1a1 \u5728\u6570\u7ec4\u4e2d\uff0c\u4f46 2 \u6ca1\u6709\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [7,8,9,11,12]\n\u8f93\u51fa\uff1a1\n\u89e3\u91ca\uff1a\u6700\u5c0f\u7684\u6b63\u6570 1 \u6ca1\u6709\u51fa\u73b0\u3002\n<\/code><\/pre>\n<p><strong>\u63d0\u793a\uff1a<\/strong><\/p>\n<ul>\n<li><code>1 &lt;= nums.length &lt;= 105<\/code><\/li>\n<li><code>-231 &lt;= nums[i] &lt;= 231 - 1<\/code><\/li>\n<\/ul>\n<h2 id=\"\u94fe\u8868\">\u94fe\u8868<\/h2>\n<h3 id=\"\u5feb\u4e50\u6570\">\u5feb\u4e50\u6570<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-15\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7f16\u5199\u4e00\u4e2a\u7b97\u6cd5\u6765\u5224\u65ad\u4e00\u4e2a\u6570 <code>n<\/code> \u662f\u4e0d\u662f\u5feb\u4e50\u6570\u3002<\/p>\n<p><strong>\u300c\u5feb\u4e50\u6570\u300d<\/strong> \u5b9a\u4e49\u4e3a\uff1a<\/p>\n<ul>\n<li>\u5bf9\u4e8e\u4e00\u4e2a\u6b63\u6574\u6570\uff0c\u6bcf\u4e00\u6b21\u5c06\u8be5\u6570\u66ff\u6362\u4e3a\u5b83\u6bcf\u4e2a\u4f4d\u7f6e\u4e0a\u7684\u6570\u5b57\u7684\u5e73\u65b9\u548c\u3002<\/li>\n<li>\u7136\u540e\u91cd\u590d\u8fd9\u4e2a\u8fc7\u7a0b\u76f4\u5230\u8fd9\u4e2a\u6570\u53d8\u4e3a 1\uff0c\u4e5f\u53ef\u80fd\u662f <strong>\u65e0\u9650\u5faa\u73af<\/strong> \u4f46\u59cb\u7ec8\u53d8\u4e0d\u5230 1\u3002<\/li>\n<li>\u5982\u679c\u8fd9\u4e2a\u8fc7\u7a0b <strong>\u7ed3\u679c\u4e3a<\/strong> 1\uff0c\u90a3\u4e48\u8fd9\u4e2a\u6570\u5c31\u662f\u5feb\u4e50\u6570\u3002<\/li>\n<\/ul>\n<p>\u5982\u679c <code>n<\/code> \u662f <em>\u5feb\u4e50\u6570<\/em> \u5c31\u8fd4\u56de <code>true<\/code> \uff1b\u4e0d\u662f\uff0c\u5219\u8fd4\u56de <code>false<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-9\">\u9898\u76ee\u89e3\u6790\uff1a<\/h4>\n<p>\u65b9\u6cd5\uff1a<br \/>\n\u4f7f\u7528 \u201c\u5feb\u6162\u6307\u9488\u201d \u601d\u60f3\uff0c\u627e\u51fa\u5faa\u73af\uff1a\u201c\u5feb\u6307\u9488\u201d \u6bcf\u6b21\u8d70\u4e24\u6b65\uff0c\u201c\u6162\u6307\u9488\u201d \u6bcf\u6b21\u8d70\u4e00\u6b65\uff0c\u5f53\u4e8c\u8005\u76f8\u7b49\u65f6\uff0c\u5373\u4e3a\u4e00\u4e2a\u5faa\u73af\u5468\u671f\u3002\u6b64\u65f6\uff0c\u5224\u65ad\u662f\u4e0d\u662f\u56e0\u4e3a 1 \u5f15\u8d77\u7684\u5faa\u73af\uff0c\u662f\u7684\u8bdd\u5c31\u662f\u5feb\u4e50\u6570\uff0c\u5426\u5219\u4e0d\u662f\u5feb\u4e50\u6570\u3002<br \/>\n\u6ce8\u610f\uff1a\u6b64\u9898\u4e0d\u5efa\u8bae\u7528\u96c6\u5408\u8bb0\u5f55\u6bcf\u6b21\u7684\u8ba1\u7b97\u7ed3\u679c\u6765\u5224\u65ad\u662f\u5426\u8fdb\u5165\u5faa\u73af\uff0c\u56e0\u4e3a\u8fd9\u4e2a\u96c6\u5408\u53ef\u80fd\u5927\u5230\u65e0\u6cd5\u5b58\u50a8\uff1b\u53e6\u5916\uff0c\u4e5f\u4e0d\u5efa\u8bae\u4f7f\u7528\u9012\u5f52\uff0c\u540c\u7406\uff0c\u5982\u679c\u9012\u5f52\u5c42\u6b21\u8f83\u6df1\uff0c\u4f1a\u76f4\u63a5\u5bfc\u81f4\u8c03\u7528\u6808\u5d29\u6e83\u3002\u4e0d\u8981\u56e0\u4e3a\u8fd9\u4e2a\u9898\u76ee\u7ed9\u51fa\u7684\u6574\u6570\u662f int \u578b\u800c\u6295\u673a\u53d6\u5de7\u3002<\/p>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 19\n\u8f93\u51fa\uff1atrue\n\u89e3\u91ca\uff1a\n12 + 92 = 82\n82 + 22 = 68\n62 + 82 = 100\n12 + 02 + 02 = 1\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 2\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-15\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include&lt;iostream&gt;\n\n\nusing namespace std;\n\nint getSum(int number)\n{\n    int sum = 0;\n    while (number &gt; 0)\n    {\n        int perNumber = number % 10;\n        sum += perNumber * perNumber;\n        number = number \/ 10;\n    }\n\n    return sum;\n}\n\n\nclass Solution {\npublic:\n    bool isHappy(int n) {\n        int slow = n, fast = n;\n        do {\n            slow = getSum(slow);\n            fast = getSum(fast);\n            fast = getSum(fast);\n\n        } while (slow != fast);\n        return slow == 1;\n    }\n};\n<\/code><\/pre>\n<h3 id=\"\u5408\u5e76\u4e24\u4e2a\u6709\u5e8f\u6570\u7ec4\">\u5408\u5e76\u4e24\u4e2a\u6709\u5e8f\u6570\u7ec4<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-16\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e24\u4e2a\u6309 <strong>\u975e\u9012\u51cf\u987a\u5e8f<\/strong> \u6392\u5217\u7684\u6574\u6570\u6570\u7ec4 <code>nums1<\/code> \u548c <code>nums2<\/code>\uff0c\u53e6\u6709\u4e24\u4e2a\u6574\u6570 <code>m<\/code> \u548c <code>n<\/code> \uff0c\u5206\u522b\u8868\u793a <code>nums1<\/code> \u548c <code>nums2<\/code> \u4e2d\u7684\u5143\u7d20\u6570\u76ee\u3002<\/p>\n<p>\u8bf7\u4f60 <strong>\u5408\u5e76<\/strong> <code>nums2<\/code> \u5230 <code>nums1<\/code> \u4e2d\uff0c\u4f7f\u5408\u5e76\u540e\u7684\u6570\u7ec4\u540c\u6837\u6309 <strong>\u975e\u9012\u51cf\u987a\u5e8f<\/strong> \u6392\u5217\u3002<\/p>\n<p><strong>\u6ce8\u610f\uff1a<\/strong>\u6700\u7ec8\uff0c\u5408\u5e76\u540e\u6570\u7ec4\u4e0d\u5e94\u7531\u51fd\u6570\u8fd4\u56de\uff0c\u800c\u662f\u5b58\u50a8\u5728\u6570\u7ec4 <code>nums1<\/code> \u4e2d\u3002\u4e3a\u4e86\u5e94\u5bf9\u8fd9\u79cd\u60c5\u51b5\uff0c<code>nums1<\/code> \u7684\u521d\u59cb\u957f\u5ea6\u4e3a <code>m + n<\/code>\uff0c\u5176\u4e2d\u524d <code>m<\/code> \u4e2a\u5143\u7d20\u8868\u793a\u5e94\u5408\u5e76\u7684\u5143\u7d20\uff0c\u540e <code>n<\/code> \u4e2a\u5143\u7d20\u4e3a <code>0<\/code> \uff0c\u5e94\u5ffd\u7565\u3002<code>nums2<\/code> \u7684\u957f\u5ea6\u4e3a <code>n<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-10\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u65b9\u6cd5\u4e8c\u4e2d\uff0c\u4e4b\u6240\u4ee5\u8981\u4f7f\u7528\u4e34\u65f6\u53d8\u91cf\uff0c\u662f\u56e0\u4e3a\u5982\u679c\u76f4\u63a5\u5408\u5e76\u5230\u6570\u7ec4 <code>nums1<\/code>\u4e2d\uff0c<code>nums1<\/code>\u4e2d\u7684\u5143\u7d20\u53ef\u80fd\u4f1a\u5728\u53d6\u51fa\u4e4b\u524d\u88ab\u8986\u76d6\u3002\u90a3\u4e48\u5982\u4f55\u76f4\u63a5\u907f\u514d\u8986\u76d6 <code>nums1<\/code>\u4e2d\u7684\u5143\u7d20\u5462\uff1f\u89c2\u5bdf\u53ef\u77e5\uff0c<code>nums1<\/code>\u7684\u540e\u534a\u90e8\u5206\u662f\u7a7a\u7684\uff0c\u53ef\u4ee5\u76f4\u63a5\u8986\u76d6\u800c\u4e0d\u4f1a\u5f71\u54cd\u7ed3\u679c\u3002\u56e0\u6b64\u53ef\u4ee5\u6307\u9488\u8bbe\u7f6e\u4e3a\u4ece\u540e\u5411\u524d\u904d\u5386\uff0c\u6bcf\u6b21\u53d6\u4e24\u8005\u4e4b\u4e2d\u7684\u8f83\u5927\u8005\u653e\u8fdb <code>nums1<\/code>\u7684\u6700\u540e\u9762\u3002<\/p>\n<p>\u4e25\u683c\u6765\u8bf4\uff0c\u5728\u6b64\u904d\u5386\u8fc7\u7a0b\u4e2d\u7684\u4efb\u610f\u4e00\u4e2a\u65f6\u523b\uff0c<code>nums1<\/code>\u6570\u7ec4\u4e2d\u6709<code>m-p1-1<\/code>\u4e2a\u5143\u7d20\u88ab\u653e\u5165<code>nums1<\/code>\u7684\u540e\u534a\u90e8,<code>nums2<\/code>\u6570\u7ec4\u4e2d\u6709<code>n-p2-1<\/code>\u4e2a\u5143\u7d20\u88ab\u653e\u5165<code>nums1<\/code>\u7684\u540e\u534a\u90e8,\u800c\u5728\u6307\u9488<code>p1<\/code>\u7684\u540e\u9762,<code>nums1<\/code>\u6570\u7ec4\u6709<code>m+n-p1-1<\/code>\u4e2a\u4f4d\u7f6e<\/p>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3\n\u8f93\u51fa\uff1a[1,2,2,3,5,6]\n\u89e3\u91ca\uff1a\u9700\u8981\u5408\u5e76 [1,2,3] \u548c [2,5,6] \u3002\n\u5408\u5e76\u7ed3\u679c\u662f [1,2,2,3,5,6] \uff0c\u5176\u4e2d\u659c\u4f53\u52a0\u7c97\u6807\u6ce8\u7684\u4e3a nums1 \u4e2d\u7684\u5143\u7d20\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums1 = [1], m = 1, nums2 = [], n = 0\n\u8f93\u51fa\uff1a[1]\n\u89e3\u91ca\uff1a\u9700\u8981\u5408\u5e76 [1] \u548c [] \u3002\n\u5408\u5e76\u7ed3\u679c\u662f [1] \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums1 = [0], m = 0, nums2 = [1], n = 1\n\u8f93\u51fa\uff1a[1]\n\u89e3\u91ca\uff1a\u9700\u8981\u5408\u5e76\u7684\u6570\u7ec4\u662f [] \u548c [1] \u3002\n\u5408\u5e76\u7ed3\u679c\u662f [1] \u3002\n\u6ce8\u610f\uff0c\u56e0\u4e3a m = 0 \uff0c\u6240\u4ee5 nums1 \u4e2d\u6ca1\u6709\u5143\u7d20\u3002nums1 \u4e2d\u4ec5\u5b58\u7684 0 \u4ec5\u4ec5\u662f\u4e3a\u4e86\u786e\u4fdd\u5408\u5e76\u7ed3\u679c\u53ef\u4ee5\u987a\u5229\u5b58\u653e\u5230 nums1 \u4e2d\u3002\n<\/code><\/pre>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-16\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\n\/\/\u6b63\u5411\u53cc\u94fe\u8868\nclass Solution {\npublic:\n    void merge(vector&lt;int&gt;&amp; nums1, int m, vector&lt;int&gt;&amp; nums2, int n) {\n        int p1 = 0, p2 = 0;\n        int sorted[m + n];\n        int cur;\n        while (p1 &lt; m || p2 &lt; n) {\n            if (p1 == m) {\n                cur = nums2[p2++];\n            }\n            else if (p2 == n) {\n                cur = nums1[p1++];\n            }\n            else if (nums1[p1] &lt; nums2[p2]) {\n                cur = nums1[p1++];\n            }\n            else {\n                cur = nums2[p2++];\n            }\n            sorted[p1 + p2 - 1] = cur;\n        }\n        for (int i = 0; i != m + n; ++i) {\n            nums1[i] = sorted[i];\n        }\n    }\n};\n\n\/\/\u9006\u5411\u53cc\u94fe\u8868\nclass Solution {\npublic:\n    void merge(vector&lt;int&gt;&amp; nums1, int m, vector&lt;int&gt;&amp; nums2, int n) {\n        int p1 = m - 1, p2 = n - 1;\n        int tail = m + n - 1;\n        int cur;\n        while (p1 &gt;= 0 || p2 &gt;= 0) {\n            if (p1 == -1) {\n                cur = nums2[p2--];\n            }\n            else if (p2 == -1) {\n                cur = nums1[p1--];\n            }\n            else if (nums1[p1] &gt; nums2[p2]) {\n                cur = nums1[p1--];\n            }\n            else {\n                cur = nums2[p2--];\n            }\n            nums1[tail--] = cur;\n        }\n    }\n};\n\n\n<\/code><\/pre>\n<h3 id=\"\u79fb\u9664\u5143\u7d20\">\u79fb\u9664\u5143\u7d20<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-17\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6570\u7ec4 <code>nums<\/code> \u548c\u4e00\u4e2a\u503c <code>val<\/code>\uff0c\u4f60\u9700\u8981\u539f\u5730\u79fb\u9664\u6240\u6709\u6570\u503c\u7b49\u4e8e <code>val<\/code> \u7684\u5143\u7d20\uff0c\u5e76\u8fd4\u56de\u79fb\u9664\u540e\u6570\u7ec4\u7684\u65b0\u957f\u5ea6\u3002<\/p>\n<p>\u4e0d\u8981\u4f7f\u7528\u989d\u5916\u7684\u6570\u7ec4\u7a7a\u95f4\uff0c\u4f60\u5fc5\u987b\u4ec5\u4f7f\u7528 <code>O(1)<\/code> \u989d\u5916\u7a7a\u95f4\u5e76\u539f\u5730\u4fee\u6539\u8f93\u5165\u6570\u7ec4\u3002<\/p>\n<p>\u5143\u7d20\u7684\u987a\u5e8f\u53ef\u4ee5\u6539\u53d8\u3002\u4f60\u4e0d\u9700\u8981\u8003\u8651\u6570\u7ec4\u4e2d\u8d85\u51fa\u65b0\u957f\u5ea6\u540e\u9762\u7684\u5143\u7d20\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-11\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p><strong>\u65b9\u6cd5\u4e00:<\/strong><\/p>\n<p>\u7531\u4e8e\u9898\u76ee\u8981\u6c42\u5220\u9664\u6570\u7ec4\u4e2d\u7b49\u4e8e <code>val<\/code> \u7684\u5143\u7d20\uff0c\u56e0\u6b64\u8f93\u51fa\u6570\u7ec4\u7684\u957f\u5ea6\u4e00\u5b9a\u5c0f\u4e8e\u7b49\u4e8e\u8f93\u5165\u6570\u7ec4\u7684\u957f\u5ea6\uff0c\u6211\u4eec\u53ef\u4ee5\u628a\u8f93\u51fa\u7684\u6570\u7ec4\u76f4\u63a5\u5199\u5728\u8f93\u5165\u6570\u7ec4\u4e0a\u3002\u53ef\u4ee5\u4f7f\u7528\u53cc\u6307\u9488\uff1a\u53f3\u6307\u9488 <code>right<\/code> \u6307\u5411\u5f53\u524d\u5c06\u8981\u5904\u7406\u7684\u5143\u7d20\uff0c\u5de6\u6307\u9488 <code>left<\/code> \u6307\u5411\u4e0b\u4e00\u4e2a\u5c06\u8981\u8d4b\u503c\u7684\u4f4d\u7f6e\u3002<\/p>\n<p>\u5982\u679c\u53f3\u6307\u9488\u6307\u5411\u7684\u5143\u7d20\u4e0d\u7b49\u4e8e <code>val<\/code>\uff0c\u5b83\u4e00\u5b9a\u662f\u8f93\u51fa\u6570\u7ec4\u7684\u4e00\u4e2a\u5143\u7d20\uff0c\u6211\u4eec\u5c31\u5c06\u53f3\u6307\u9488\u6307\u5411\u7684\u5143\u7d20\u590d\u5236\u5230\u5de6\u6307\u9488\u4f4d\u7f6e\uff0c\u7136\u540e\u5c06\u5de6\u53f3\u6307\u9488\u540c\u65f6\u53f3\u79fb\uff1b<\/p>\n<p>\u5982\u679c\u53f3\u6307\u9488\u6307\u5411\u7684\u5143\u7d20\u7b49\u4e8e <code>val<\/code>\uff0c\u5b83\u4e0d\u80fd\u5728\u8f93\u51fa\u6570\u7ec4\u91cc\uff0c\u6b64\u65f6\u5de6\u6307\u9488\u4e0d\u52a8\uff0c\u53f3\u6307\u9488\u53f3\u79fb\u4e00\u4f4d\u3002<\/p>\n<p>\u6574\u4e2a\u8fc7\u7a0b\u4fdd\u6301\u4e0d\u53d8\u7684\u6027\u8d28\u662f\uff1a\u533a\u95f4 <code>[0,left)<\/code>\u4e2d\u7684\u5143\u7d20\u90fd\u4e0d\u7b49\u4e8e <code>val<\/code>\u3002\u5f53\u5de6\u53f3\u6307\u9488\u904d\u5386\u5b8c\u8f93\u5165\u6570\u7ec4\u4ee5\u540e\uff0c<code>left<\/code> \u7684\u503c\u5c31\u662f\u8f93\u51fa\u6570\u7ec4\u7684\u957f\u5ea6\u3002<\/p>\n<p>\u8fd9\u6837\u7684\u7b97\u6cd5\u5728\u6700\u574f\u60c5\u51b5\u4e0b\uff08\u8f93\u5165\u6570\u7ec4\u4e2d\u6ca1\u6709\u5143\u7d20\u7b49\u4e8e <code>val<\/code>\uff09\uff0c\u5de6\u53f3\u6307\u9488\u5404\u904d\u5386\u4e86\u6570\u7ec4\u4e00\u6b21\u3002<\/p>\n<p><strong>\u65b9\u6cd5\u4e8c:<\/strong><\/p>\n<p>\u5982\u679c\u8981\u79fb\u9664\u7684\u5143\u7d20\u6070\u597d\u5728\u6570\u7ec4\u7684\u5f00\u5934\uff0c\u4f8b\u5982\u5e8f\u5217<code>[1,2,3,4,5]<\/code>\uff0c\u5f53 <code>val<\/code> \u4e3a 1 \u65f6\uff0c\u6211\u4eec\u9700\u8981\u628a\u6bcf\u4e00\u4e2a\u5143\u7d20\u90fd\u5de6\u79fb\u4e00\u4f4d\u3002\u6ce8\u610f\u5230\u9898\u76ee\u4e2d\u8bf4\uff1a\u300c\u5143\u7d20\u7684\u987a\u5e8f\u53ef\u4ee5\u6539\u53d8\u300d\u3002\u5b9e\u9645\u4e0a\u6211\u4eec\u53ef\u4ee5\u76f4\u63a5\u5c06\u6700\u540e\u4e00\u4e2a\u5143\u7d20 <code>5<\/code> \u79fb\u52a8\u5230\u5e8f\u5217\u5f00\u5934\uff0c\u53d6\u4ee3\u5143\u7d20 <code>1<\/code>\uff0c\u5f97\u5230\u5e8f\u5217<code>[5,2,3,4]<\/code>\uff0c\u540c\u6837\u6ee1\u8db3\u9898\u76ee\u8981\u6c42\u3002\u8fd9\u4e2a\u4f18\u5316\u5728\u5e8f\u5217\u4e2d <code>val<\/code> \u5143\u7d20\u7684\u6570\u91cf\u8f83\u5c11\u65f6\u975e\u5e38\u6709\u6548\u3002<\/p>\n<p>\u5b9e\u73b0\u65b9\u9762\uff0c\u6211\u4eec\u4f9d\u7136\u4f7f\u7528\u53cc\u6307\u9488\uff0c\u4e24\u4e2a\u6307\u9488\u521d\u59cb\u65f6\u5206\u522b\u4f4d\u4e8e\u6570\u7ec4\u7684\u9996\u5c3e\uff0c\u5411\u4e2d\u95f4\u79fb\u52a8\u904d\u5386\u8be5\u5e8f\u5217\u3002<\/p>\n<p>\u7b97\u6cd5<\/p>\n<p>\u5982\u679c\u5de6\u6307\u9488 <code>left<\/code>\u6307\u5411\u7684\u5143\u7d20\u7b49\u4e8e <code>val<\/code>\uff0c\u6b64\u65f6\u5c06\u53f3\u6307\u9488 <code>right<\/code>\u6307\u5411\u7684\u5143\u7d20\u590d\u5236\u5230\u5de6\u6307\u9488 <code>left<\/code> \u7684\u4f4d\u7f6e\uff0c\u7136\u540e\u53f3\u6307\u9488 <code>right<\/code> \u5de6\u79fb\u4e00\u4f4d\u3002\u5982\u679c\u8d4b\u503c\u8fc7\u6765\u7684\u5143\u7d20\u6070\u597d\u4e5f\u7b49\u4e8e <code>val<\/code>\uff0c\u53ef\u4ee5\u7ee7\u7eed\u628a\u53f3\u6307\u9488 <code>right<\/code>\u6307\u5411\u7684\u5143\u7d20\u7684\u503c\u8d4b\u503c\u8fc7\u6765\uff08\u5de6\u6307\u9488 <code>left<\/code> \u6307\u5411\u7684\u7b49\u4e8e <code>val<\/code> \u7684\u5143\u7d20\u7684\u4f4d\u7f6e\u7ee7\u7eed\u88ab\u8986\u76d6\uff09\uff0c\u76f4\u5230\u5de6\u6307\u9488\u6307\u5411\u7684\u5143\u7d20\u7684\u503c\u4e0d\u7b49\u4e8e <code>val<\/code>\u4e3a\u6b62\u3002<\/p>\n<p>\u5f53\u5de6\u6307\u9488 <code>left<\/code> \u548c\u53f3\u6307\u9488 <code>right<\/code> \u91cd\u5408\u7684\u65f6\u5019\uff0c\u5de6\u53f3\u6307\u9488\u904d\u5386\u5b8c\u6570\u7ec4\u4e2d\u6240\u6709\u7684\u5143\u7d20\u3002<\/p>\n<p>\u8fd9\u6837\u7684\u65b9\u6cd5\u4e24\u4e2a\u6307\u9488\u5728\u6700\u574f\u7684\u60c5\u51b5\u4e0b\u5408\u8d77\u6765\u53ea\u904d\u5386\u4e86\u6570\u7ec4\u4e00\u6b21\u3002\u4e0e\u65b9\u6cd5\u4e00\u4e0d\u540c\u7684\u662f\uff0c\u65b9\u6cd5\u4e8c\u907f\u514d\u4e86\u9700\u8981\u4fdd\u7559\u7684\u5143\u7d20\u7684\u91cd\u590d\u8d4b\u503c\u64cd\u4f5c\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-17\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\n\/\/\u65b9\u6cd5\u4e00\nclass Solution {\npublic:\n    int removeElement(vector&lt;int&gt;&amp; nums, int val) {\n        int n = nums.size();\n        int left = 0;\n        for (int right = 0; right &lt; n; right++)\n        {\n\n            if (nums[right] != val)\n            {\n                nums[left] = nums[right];\n                left++;\n            }\n        }\n\n        return left;\n\n    }\n};\n\n\/\/\u65b9\u6cd5\u4e8c\nclass Solution {\npublic:\n    int removeElement(vector&lt;int&gt;&amp; nums, int val) {\n        int right = nums.size();\n        int left = 0;\n        while (left &lt; right)\n        {\n            if (nums[left] == val)\n            {\n                nums[left] = nums[right-1];\n                right--;\n            }\n            else\n            {\n                left++;\n            }\n        }\n\n        return left;\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1anums = [3,2,2,3], val = 3\n\u8f93\u51fa\uff1a2, nums = [2,2]\n\u89e3\u91ca\uff1a\u51fd\u6570\u5e94\u8be5\u8fd4\u56de\u65b0\u7684\u957f\u5ea6 2, \u5e76\u4e14 nums \u4e2d\u7684\u524d\u4e24\u4e2a\u5143\u7d20\u5747\u4e3a 2\u3002\u4f60\u4e0d\u9700\u8981\u8003\u8651\u6570\u7ec4\u4e2d\u8d85\u51fa\u65b0\u957f\u5ea6\u540e\u9762\u7684\u5143\u7d20\u3002\u4f8b\u5982\uff0c\u51fd\u6570\u8fd4\u56de\u7684\u65b0\u957f\u5ea6\u4e3a 2 \uff0c\u800c nums = [2,2,3,3] \u6216 nums = [2,2,0,0]\uff0c\u4e5f\u4f1a\u88ab\u89c6\u4f5c\u6b63\u786e\u7b54\u6848\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1anums = [0,1,2,2,3,0,4,2], val = 2\n\u8f93\u51fa\uff1a5, nums = [0,1,3,0,4]\n\u89e3\u91ca\uff1a\u51fd\u6570\u5e94\u8be5\u8fd4\u56de\u65b0\u7684\u957f\u5ea6 5, \u5e76\u4e14 nums \u4e2d\u7684\u524d\u4e94\u4e2a\u5143\u7d20\u4e3a 0, 1, 3, 0, 4\u3002\u6ce8\u610f\u8fd9\u4e94\u4e2a\u5143\u7d20\u53ef\u4e3a\u4efb\u610f\u987a\u5e8f\u3002\u4f60\u4e0d\u9700\u8981\u8003\u8651\u6570\u7ec4\u4e2d\u8d85\u51fa\u65b0\u957f\u5ea6\u540e\u9762\u7684\u5143\u7d20\u3002\n<\/code><\/pre>\n<h3 id=\"\u5220\u9664\u6709\u5e8f\u6570\u7ec4\u4e2d\u7684\u91cd\u590d\u9879\">\u5220\u9664\u6709\u5e8f\u6570\u7ec4\u4e2d\u7684\u91cd\u590d\u9879<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-18\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a <strong>\u975e\u4e25\u683c\u9012\u589e\u6392\u5217<\/strong> \u7684\u6570\u7ec4 <code>nums<\/code> \uff0c\u8bf7\u4f60\u539f\u5730\u5220\u9664\u91cd\u590d\u51fa\u73b0\u7684\u5143\u7d20\uff0c\u4f7f\u6bcf\u4e2a\u5143\u7d20 <strong>\u53ea\u51fa\u73b0\u4e00\u6b21<\/strong> \uff0c\u8fd4\u56de\u5220\u9664\u540e\u6570\u7ec4\u7684\u65b0\u957f\u5ea6\u3002\u5143\u7d20\u7684 <strong>\u76f8\u5bf9\u987a\u5e8f<\/strong> \u5e94\u8be5\u4fdd\u6301 <strong>\u4e00\u81f4<\/strong> \u3002\u7136\u540e\u8fd4\u56de <code>nums<\/code> \u4e2d\u552f\u4e00\u5143\u7d20\u7684\u4e2a\u6570\u3002<\/p>\n<p>\u8003\u8651 <code>nums<\/code> \u7684\u552f\u4e00\u5143\u7d20\u7684\u6570\u91cf\u4e3a <code>k<\/code> \uff0c\u4f60\u9700\u8981\u505a\u4ee5\u4e0b\u4e8b\u60c5\u786e\u4fdd\u4f60\u7684\u9898\u89e3\u53ef\u4ee5\u88ab\u901a\u8fc7\uff1a<\/p>\n<ul>\n<li>\u66f4\u6539\u6570\u7ec4 <code>nums<\/code> \uff0c\u4f7f <code>nums<\/code> \u7684\u524d <code>k<\/code> \u4e2a\u5143\u7d20\u5305\u542b\u552f\u4e00\u5143\u7d20\uff0c\u5e76\u6309\u7167\u5b83\u4eec\u6700\u521d\u5728 <code>nums<\/code> \u4e2d\u51fa\u73b0\u7684\u987a\u5e8f\u6392\u5217\u3002<code>nums<\/code> \u7684\u5176\u4f59\u5143\u7d20\u4e0e <code>nums<\/code> \u7684\u5927\u5c0f\u4e0d\u91cd\u8981\u3002<\/li>\n<li>\u8fd4\u56de <code>k<\/code> \u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-12\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u9898\u76ee\u4f7f\u7528\u5feb\u6162\u6307\u9488\u8fdb\u884c\u5224\u65ad,\u7531\u5feb\u6307\u9488\u8fdb\u884c\u5143\u7d20\u662f\u5426\u76f8\u540c\u7684\u5224\u65ad,\u6162\u6307\u9488\u5f53\u5143\u7d20\u4e0d\u540c\u65f6\u81ea\u589e,\u5feb\u6307\u9488\u65e0\u8bba\u4ec0\u4e48\u60c5\u51b5\u4e0b\u90fd\u8981\u81ea\u589e<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-18\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-c++\" lang=\"c++\">class Solution {\npublic:\n    int removeDuplicates(vector&lt;int&gt;&amp; nums) {\n        int slow = 1, fast = 1;\n        int n = nums.size();\n        while (fast &lt; n)\n        {\n            if (nums[fast-1] != nums[fast] )\n            {\n                nums[slow] = nums[fast];\n                slow++;\n            }\n            fast++;\n        }\n        return slow;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-c++\" lang=\"c++\">\u8f93\u5165\uff1anums = [1,1,2]\n\u8f93\u51fa\uff1a2, nums = [1,2,_]\n\u89e3\u91ca\uff1a\u51fd\u6570\u5e94\u8be5\u8fd4\u56de\u65b0\u7684\u957f\u5ea6 2 \uff0c\u5e76\u4e14\u539f\u6570\u7ec4 nums \u7684\u524d\u4e24\u4e2a\u5143\u7d20\u88ab\u4fee\u6539\u4e3a 1, 2 \u3002\u4e0d\u9700\u8981\u8003\u8651\u6570\u7ec4\u4e2d\u8d85\u51fa\u65b0\u957f\u5ea6\u540e\u9762\u7684\u5143\u7d20\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-c++\" lang=\"c++\">\u8f93\u5165\uff1anums = [0,0,1,1,1,2,2,3,3,4]\n\u8f93\u51fa\uff1a5, nums = [0,1,2,3,4]\n\u89e3\u91ca\uff1a\u51fd\u6570\u5e94\u8be5\u8fd4\u56de\u65b0\u7684\u957f\u5ea6 5 \uff0c \u5e76\u4e14\u539f\u6570\u7ec4 nums \u7684\u524d\u4e94\u4e2a\u5143\u7d20\u88ab\u4fee\u6539\u4e3a 0, 1, 2, 3, 4 \u3002\u4e0d\u9700\u8981\u8003\u8651\u6570\u7ec4\u4e2d\u8d85\u51fa\u65b0\u957f\u5ea6\u540e\u9762\u7684\u5143\u7d20\u3002\n<\/code><\/pre>\n<h3 id=\"\u5220\u9664\u6709\u5e8f\u6570\u7ec4\u4e2d\u7684\u91cd\u590d\u9879\u2171\">\u5220\u9664\u6709\u5e8f\u6570\u7ec4\u4e2d\u7684\u91cd\u590d\u9879\u2161<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-19\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6709\u5e8f\u6570\u7ec4 <code>nums<\/code> \uff0c\u8bf7\u4f60\u539f\u5730\u5220\u9664\u91cd\u590d\u51fa\u73b0\u7684\u5143\u7d20\uff0c\u4f7f\u5f97\u51fa\u73b0\u6b21\u6570\u8d85\u8fc7\u4e24\u6b21\u7684\u5143\u7d20<strong>\u53ea\u51fa\u73b0\u4e24\u6b21<\/strong> \uff0c\u8fd4\u56de\u5220\u9664\u540e\u6570\u7ec4\u7684\u65b0\u957f\u5ea6\u3002<\/p>\n<p>\u4e0d\u8981\u4f7f\u7528\u989d\u5916\u7684\u6570\u7ec4\u7a7a\u95f4\uff0c\u4f60\u5fc5\u987b\u5728\u539f\u5730\u5e76\u5728\u4f7f\u7528 O(1) \u989d\u5916\u7a7a\u95f4\u7684\u6761\u4ef6\u4e0b\u5b8c\u6210\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-7\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u548c\u521a\u521a\u90a3\u9053\u9898\u76ee\u5dee\u4e0d\u591a,\u53d1\u73b0\u6709\u8fd9\u4e48\u51e0\u4e2a\u5173\u952e\u70b9,\u7b2c\u4e00\u4e2a\u5c31\u662f\u4e00\u5f00\u59cb\u5feb\u6162\u6307\u9488\u9009\u53d6\u7684\u4f4d\u7f6e,\u90fd\u9009\u62e9\u5728\u9700\u8981\u5224\u65ad\u7684\u4f4d\u7f6e,\u7136\u540e\u7b2c\u4e8c\u70b9,\u4e3a\u4ec0\u4e48\u8fd9\u6b21\u4f7f\u7528<code>[slow-2]<\/code> \u800c\u4e0d\u662f<code>[fast-2]<\/code>\uff0c\u7b54\u6848\u5728\u4e8e,\u4e0a\u9762\u90a3\u9053\u9898\u4e0d\u53ef\u4ee5\u5b58\u5728\u4e24\u4e2a\u76f8\u540c\u7684\u5143\u7d20,\u6240\u4ee5\u4e0a\u9762\u5199\u6210<code>[slow-1]<\/code>\u66ff\u6362<code>[fast-1]<\/code>\u4e5f\u662f\u53ef\u4ee5\u7684,\u6240\u4ee5\u4e0a\u9762\u90a3\u9053\u9898\u662f\u7279\u6b8a\u60c5\u51b5\uff0c\u8fd9\u9053\u9898\u5c31\u4e0d\u53ef\u4ee5\u4f7f\u7528<code>[fast-2] != [fast]<\/code><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-19\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-c++\" lang=\"c++\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int removeDuplicates(vector&lt;int&gt;&amp; nums) {\n        int n = nums.size();\n        if (n &lt;= 2) {\n            return n;\n        }\n        int slow = 2, fast = 2;\n        while (fast &lt; n) {\n            if (nums[slow - 2] != nums[fast]) {\n                nums[slow] = nums[fast];\n                ++slow;\n            }\n            ++fast;\n        }\n        return slow;\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1anums = [1,1,1,2,2,3]\n\u8f93\u51fa\uff1a5, nums = [1,1,2,2,3]\n\u89e3\u91ca\uff1a\u51fd\u6570\u5e94\u8fd4\u56de\u65b0\u957f\u5ea6 length = 5, \u5e76\u4e14\u539f\u6570\u7ec4\u7684\u524d\u4e94\u4e2a\u5143\u7d20\u88ab\u4fee\u6539\u4e3a 1, 1, 2, 2, 3\u3002 \u4e0d\u9700\u8981\u8003\u8651\u6570\u7ec4\u4e2d\u8d85\u51fa\u65b0\u957f\u5ea6\u540e\u9762\u7684\u5143\u7d20\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1anums = [0,0,1,1,1,1,2,3,3]\n\u8f93\u51fa\uff1a7, nums = [0,0,1,1,2,3,3]\n\u89e3\u91ca\uff1a\u51fd\u6570\u5e94\u8fd4\u56de\u65b0\u957f\u5ea6 length = 7, \u5e76\u4e14\u539f\u6570\u7ec4\u7684\u524d\u4e03\u4e2a\u5143\u7d20\u88ab\u4fee\u6539\u4e3a 0, 0, 1, 1, 2, 3, 3\u3002\u4e0d\u9700\u8981\u8003\u8651\u6570\u7ec4\u4e2d\u8d85\u51fa\u65b0\u957f\u5ea6\u540e\u9762\u7684\u5143\u7d20\u3002\n<\/code><\/pre>\n<h3 id=\"\u63a5\u96e8\u6c34\">\u63a5\u96e8\u6c34<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-20\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a <code>n<\/code> \u4e2a\u975e\u8d1f\u6574\u6570\u8868\u793a\u6bcf\u4e2a\u5bbd\u5ea6\u4e3a <code>1<\/code> \u7684\u67f1\u5b50\u7684\u9ad8\u5ea6\u56fe\uff0c\u8ba1\u7b97\u6309\u6b64\u6392\u5217\u7684\u67f1\u5b50\uff0c\u4e0b\u96e8\u4e4b\u540e\u80fd\u63a5\u591a\u5c11\u96e8\u6c34\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-8\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u4f7f\u7528\u53cc\u6307\u9488 <code>left<\/code> \u548c <code>right<\/code> \u5206\u522b\u4ece\u67f1\u72b6\u56fe\u7684\u5de6\u53f3\u4e24\u4fa7\u5f00\u59cb\uff0c\u540c\u65f6\u8ddf\u8e2a\u5de6\u4fa7\u7684\u6700\u5927\u9ad8\u5ea6 <code>leftMax<\/code> \u548c\u53f3\u4fa7\u7684\u6700\u5927\u9ad8\u5ea6 <code>rightMax<\/code>\u3002<\/p>\n<p>\u5728\u6bcf\u4e00\u6b65\u4e2d\uff0c\u6267\u884c\u4ee5\u4e0b\u64cd\u4f5c\uff1a<\/p>\n<ol start=\"\">\n<li>\u66f4\u65b0 <code>leftMax<\/code> \u4e3a <code>leftMax<\/code> \u548c <code>height[left]<\/code> \u4e2d\u7684\u8f83\u5927\u503c\u3002<\/li>\n<li>\u66f4\u65b0 <code>rightMax<\/code> \u4e3a <code>rightMax<\/code> \u548c <code>height[right]<\/code> \u4e2d\u7684\u8f83\u5927\u503c\u3002<\/li>\n<li>\u5224\u65ad\u54ea\u4e00\u4fa7\u7684\u67f1\u5b50\u8f83\u4f4e\uff1a\n<ul>\n<li>\u5982\u679c <code>height[left] &lt; height[right]<\/code>\uff0c\u5219\u5de6\u4fa7\u67f1\u5b50\u80fd\u63a5\u7684\u96e8\u6c34\u91cf\u4e3a <code>leftMax - height[left]<\/code>\uff0c\u5c06\u7ed3\u679c\u52a0\u5230\u603b\u96e8\u6c34\u91cf\u4e2d\uff0c\u5e76\u5c06 <code>left<\/code> \u5411\u53f3\u79fb\u52a8\u4e00\u4f4d\u3002<\/li>\n<li>\u5982\u679c <code>height[left] &gt;= height[right]<\/code>\uff0c\u5219\u53f3\u4fa7\u67f1\u5b50\u80fd\u63a5\u7684\u96e8\u6c34\u91cf\u4e3a <code>rightMax - height[right]<\/code>\uff0c\u5c06\u7ed3\u679c\u52a0\u5230\u603b\u96e8\u6c34\u91cf\u4e2d\uff0c\u5e76\u5c06 <code>right<\/code> \u5411\u5de6\u79fb\u52a8\u4e00\u4f4d\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u91cd\u590d\u6b65\u9aa4 1-3\uff0c\u76f4\u5230 <code>left<\/code> \u548c <code>right<\/code> \u76f8\u9047\u3002<\/li>\n<li>\u8fd4\u56de\u8ba1\u7b97\u5f97\u5230\u7684\u603b\u96e8\u6c34\u91cf\u3002<\/li>\n<\/ol>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-20\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\/\/\u53cc\u6307\u9488\nclass Solution {\npublic:\n    int trap(vector&lt;int&gt;&amp; height) {\n        int ans = 0;\n        int size = height.size();\n        int left = 0; int right = size - 1;\n        int leftmax = 0;\n        int rightmax = 0;\n\n\n        while (left &lt; right)\n        {\n            leftmax = max(leftmax, height[left]);\n            rightmax = max(rightmax, height[right]);\n\n            if (height[left] &lt; height[right])\n            {\n                ans += leftmax - height[left];\n                ++left;\n            }\n            else\n            {\n                ans += rightmax - height[right];\n                --right;\n            }\n\n        }\n        return ans;\n    }\n};\n\nclass Solution {\npublic:\n    int trap(vector&lt;int&gt;&amp; height) {\n        int ans = 0;\n        stack&lt;int&gt; st;\n        for (int i = 0; i &lt; height.size(); i++) {\n            while (!st.empty() &amp;&amp; height[i] &gt;= height[st.top()]) {\n                int bottom_h = height[st.top()];\n                st.pop();\n                if (st.empty()) { \/\/\u8fd9\u4e00\u6b65\u5f88\u91cd\u8981\uff0c\u5fc5\u987b\u8981\u5224\u65ad\uff0c\u5426\u5219\u5f53stk\u4e3a\u7a7a\uff0c\u4e0b\u4e00\u6b65\u4f1a\u51fa\u9519\n                    break;\n                }\n                int left = st.top();\n                int dh = min(height[left], height[i]) - bottom_h; \/\/ \u9762\u79ef\u7684\u9ad8\n                ans += dh * (i - left - 1);\n            }\n            st.push(i);\n        }\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2018\/10\/22\/rainwatertrap.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2018\/10\/22\/rainwatertrap.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aheight = [0,1,0,2,1,0,1,3,2,1,2,1]\n\u8f93\u51fa\uff1a6\n\u89e3\u91ca\uff1a\u4e0a\u9762\u662f\u7531\u6570\u7ec4 [0,1,0,2,1,0,1,3,2,1,2,1] \u8868\u793a\u7684\u9ad8\u5ea6\u56fe\uff0c\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u53ef\u4ee5\u63a5 6 \u4e2a\u5355\u4f4d\u7684\u96e8\u6c34\uff08\u84dd\u8272\u90e8\u5206\u8868\u793a\u96e8\u6c34\uff09\u3002 \n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aheight = [4,2,0,3,2,5]\n\u8f93\u51fa\uff1a9\n<\/code><\/pre>\n<h3 id=\"\u9a8c\u8bc1\u56de\u6587\u4e32\">\u9a8c\u8bc1\u56de\u6587\u4e32<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-21\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u5982\u679c\u5728\u5c06\u6240\u6709\u5927\u5199\u5b57\u7b26\u8f6c\u6362\u4e3a\u5c0f\u5199\u5b57\u7b26\u3001\u5e76\u79fb\u9664\u6240\u6709\u975e\u5b57\u6bcd\u6570\u5b57\u5b57\u7b26\u4e4b\u540e\uff0c\u77ed\u8bed\u6b63\u7740\u8bfb\u548c\u53cd\u7740\u8bfb\u90fd\u4e00\u6837\u3002\u5219\u53ef\u4ee5\u8ba4\u4e3a\u8be5\u77ed\u8bed\u662f\u4e00\u4e2a <strong>\u56de\u6587\u4e32<\/strong> \u3002<\/p>\n<p>\u5b57\u6bcd\u548c\u6570\u5b57\u90fd\u5c5e\u4e8e\u5b57\u6bcd\u6570\u5b57\u5b57\u7b26\u3002<\/p>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32 <code>s<\/code>\uff0c\u5982\u679c\u5b83\u662f <strong>\u56de\u6587\u4e32<\/strong> \uff0c\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-9\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6700\u7b80\u5355\u7684\u65b9\u6cd5\u662f\u5bf9\u5b57\u7b26\u4e32 <code>s<\/code> \u8fdb\u884c\u4e00\u6b21\u904d\u5386\uff0c\u5e76\u5c06\u5176\u4e2d\u7684\u5b57\u6bcd\u548c\u6570\u5b57\u5b57\u7b26\u8fdb\u884c\u4fdd\u7559\uff0c\u653e\u5728\u53e6\u4e00\u4e2a\u5b57\u7b26\u4e32 <code>sgood<\/code>\u4e2d\u3002\u8fd9\u6837\u6211\u4eec\u53ea\u9700\u8981\u5224\u65ad <code>sgood<\/code> \u662f\u5426\u662f\u4e00\u4e2a\u666e\u901a\u7684\u56de\u6587\u4e32\u5373\u53ef\u3002<\/p>\n<p>\u5224\u65ad\u7684\u65b9\u6cd5\u6709\u4e24\u79cd\u3002\u7b2c\u4e00\u79cd\u662f\u4f7f\u7528\u8bed\u8a00\u4e2d\u7684\u5b57\u7b26\u4e32\u7ffb\u8f6c API \u5f97\u5230 <code>sgood<\/code> \u7684\u9006\u5e8f\u5b57\u7b26\u4e32 <code>sgood_rev<\/code>\uff0c\u53ea\u8981\u8fd9\u4e24\u4e2a\u5b57\u7b26\u4e32\u76f8\u540c\uff0c\u90a3\u4e48 <code>sgood<\/code> \u5c31\u662f\u56de\u6587\u4e32\u3002<\/p>\n<p>\u7b2c\u4e8c\u79cd\u662f\u4f7f\u7528\u53cc\u6307\u9488\u3002\u521d\u59cb\u65f6\uff0c\u5de6\u53f3\u6307\u9488\u5206\u522b\u6307\u5411 <code>sgood<\/code>\u7684\u4e24\u4fa7\uff0c\u968f\u540e\u6211\u4eec\u4e0d\u65ad\u5730\u5c06\u8fd9\u4e24\u4e2a\u6307\u9488\u76f8\u5411\u79fb\u52a8\uff0c\u6bcf\u6b21\u79fb\u52a8\u4e00\u6b65\uff0c\u5e76\u5224\u65ad\u8fd9\u4e24\u4e2a\u6307\u9488\u6307\u5411\u7684\u5b57\u7b26\u662f\u5426\u76f8\u540c\u3002\u5f53\u8fd9\u4e24\u4e2a\u6307\u9488\u76f8\u9047\u65f6\uff0c\u5c31\u8bf4\u660e <code>sgood<\/code>\u65f6\u56de\u6587\u4e32\u3002<\/p>\n<p><strong>void isalnum(int c)<\/strong> \u68c0\u67e5\u6240\u4f20\u7684\u5b57\u7b26\u662f\u5426\u662f\u5b57\u6bcd\u548c\u6570\u5b57\u3002<\/p>\n<p><strong>int tolower(int c)<\/strong> \u628a\u7ed9\u5b9a\u7684\u5b57\u6bcd\u8f6c\u6362\u4e3a\u5c0f\u5199\u5b57\u6bcd\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-21\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;string&gt;\n\nusing namespace std;\n\n\/\/\u8c03\u7528API\nclass Solution {\npublic:\n    bool isPalindrome(string S) {\n        string str;\n\n        for (auto&amp; s : S)\n        {\n            if (isalnum(s))\n            {\n                str += tolower(s);\n            }\n        }\n\n        string str_rev(str.rbegin(), str.rend());\n\n        if (str == str_rev)\n        {\n            return true;\n        }\n        else\n        {\n            return false;\n        }\n    }\n};\n\n\/\/\u53cc\u6307\u9488\nclass Solution {\npublic:\n    bool isPalindrome(string S) {\n        string str;\n\n        for (auto&amp; s : S)\n        {\n            if (isalnum(s))\n            {\n                str += tolower(s);\n            }\n        }\n        int size = str.length();\n        int left = 0, right = size - 1;\n\n        while (left &lt; right)\n        {\n            if (str[left++] != str[right--])\n                return false;\n\n        }\n\n        return true;\n\n    }\n\n};\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"A man, a plan, a canal: Panama\"\n\u8f93\u51fa\uff1atrue\n\u89e3\u91ca\uff1a\"amanaplanacanalpanama\" \u662f\u56de\u6587\u4e32\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"race a car\"\n\u8f93\u51fa\uff1afalse\n\u89e3\u91ca\uff1a\"raceacar\" \u4e0d\u662f\u56de\u6587\u4e32\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \" \"\n\u8f93\u51fa\uff1atrue\n\u89e3\u91ca\uff1a\u5728\u79fb\u9664\u975e\u5b57\u6bcd\u6570\u5b57\u5b57\u7b26\u4e4b\u540e\uff0cs \u662f\u4e00\u4e2a\u7a7a\u5b57\u7b26\u4e32 \"\" \u3002\n\u7531\u4e8e\u7a7a\u5b57\u7b26\u4e32\u6b63\u7740\u53cd\u7740\u8bfb\u90fd\u4e00\u6837\uff0c\u6240\u4ee5\u662f\u56de\u6587\u4e32\u3002\n<\/code><\/pre>\n<h3 id=\"\u5224\u65ad\u5b50\u5e8f\u5217\">\u5224\u65ad\u5b50\u5e8f\u5217<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-22\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u5b57\u7b26\u4e32 <strong>s<\/strong> \u548c <strong>t<\/strong> \uff0c\u5224\u65ad <strong>s<\/strong> \u662f\u5426\u4e3a <strong>t<\/strong> \u7684\u5b50\u5e8f\u5217\u3002<\/p>\n<p>\u5b57\u7b26\u4e32\u7684\u4e00\u4e2a\u5b50\u5e8f\u5217\u662f\u539f\u59cb\u5b57\u7b26\u4e32\u5220\u9664\u4e00\u4e9b\uff08\u4e5f\u53ef\u4ee5\u4e0d\u5220\u9664\uff09\u5b57\u7b26\u800c\u4e0d\u6539\u53d8\u5269\u4f59\u5b57\u7b26\u76f8\u5bf9\u4f4d\u7f6e\u5f62\u6210\u7684\u65b0\u5b57\u7b26\u4e32\u3002\uff08\u4f8b\u5982\uff0c<code>\"ace\"<\/code>\u662f<code>\"abcde\"<\/code>\u7684\u4e00\u4e2a\u5b50\u5e8f\u5217\uff0c\u800c<code>\"aec\"<\/code>\u4e0d\u662f\uff09\u3002<\/p>\n<p><strong>\u8fdb\u9636\uff1a<\/strong><\/p>\n<p>\u5982\u679c\u6709\u5927\u91cf\u8f93\u5165\u7684 S\uff0c\u79f0\u4f5c S1, S2, &#8230; , Sk \u5176\u4e2d k &gt;= 10\u4ebf\uff0c\u4f60\u9700\u8981\u4f9d\u6b21\u68c0\u67e5\u5b83\u4eec\u662f\u5426\u4e3a T \u7684\u5b50\u5e8f\u5217\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u4f60\u4f1a\u600e\u6837\u6539\u53d8\u4ee3\u7801\uff1f<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-10\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><code>s<\/code> \u662f\u5426\u662f <code>t<\/code> \u7684\u5b50\u5e8f\u5217\uff0c\u56e0\u6b64\u53ea\u8981\u80fd\u627e\u5230\u4efb\u610f\u4e00\u79cd <code>s<\/code>\u5728 <code>t<\/code> \u4e2d\u51fa\u73b0\u7684\u65b9\u5f0f\uff0c\u5373\u53ef\u8ba4\u4e3a <code>s<\/code> \u662f <code>t<\/code> \u7684\u5b50\u5e8f\u5217\u3002<\/p>\n<p>\u800c\u5f53\u6211\u4eec\u4ece\u524d\u5f80\u540e\u5339\u914d\uff0c\u53ef\u4ee5\u53d1\u73b0\u6bcf\u6b21\u8d2a\u5fc3\u5730\u5339\u914d\u9760\u524d\u7684\u5b57\u7b26\u662f\u6700\u4f18\u51b3\u7b56\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-22\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;string&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\n\n\/\/\u53cc\u6307\u9488\nclass Solution {\npublic:\n    bool isSubsequence(string s, string t) {\n        int str_first = 0;\n        int str_second = 0;\n\n        if (s == \"\")\n\n        {\n            return true;\n        }\n\n        int t_size = t.length();\n        int s_size = s.length();\n\n        while (str_second &lt; t_size)\n        {\n\n            if (s[str_first] == t[str_second])\n            {\n                str_first++;\n                if (str_first == s_size)\n                    return true;\n            }\n\n            str_second++;\n        }\n\n        return false;\n\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"abc\", t = \"ahbgdc\"\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"axc\", t = \"ahbgdc\"\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<h3 id=\"\u4e24\u6570\u4e4b\u548c\u2171-\u8f93\u5165\u6709\u5e8f\u6570\u7ec4\">\u4e24\u6570\u4e4b\u548c\u2161-\u8f93\u5165\u6709\u5e8f\u6570\u7ec4<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-23\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u4e0b\u6807\u4ece <strong>1<\/strong> \u5f00\u59cb\u7684\u6574\u6570\u6570\u7ec4 <code>numbers<\/code> \uff0c\u8be5\u6570\u7ec4\u5df2\u6309 <strong>\u975e\u9012\u51cf\u987a\u5e8f\u6392\u5217<\/strong> \uff0c\u8bf7\u4f60\u4ece\u6570\u7ec4\u4e2d\u627e\u51fa\u6ee1\u8db3\u76f8\u52a0\u4e4b\u548c\u7b49\u4e8e\u76ee\u6807\u6570 <code>target<\/code> \u7684\u4e24\u4e2a\u6570\u3002\u5982\u679c\u8bbe\u8fd9\u4e24\u4e2a\u6570\u5206\u522b\u662f <code>numbers[index1]<\/code> \u548c <code>numbers[index2]<\/code> \uff0c\u5219 <code>1 &lt;= index1 &lt; index2 &lt;= numbers.length<\/code> \u3002<\/p>\n<p>\u4ee5\u957f\u5ea6\u4e3a 2 \u7684\u6574\u6570\u6570\u7ec4 <code>[index1, index2]<\/code> \u7684\u5f62\u5f0f\u8fd4\u56de\u8fd9\u4e24\u4e2a\u6574\u6570\u7684\u4e0b\u6807 <code>index1<\/code> \u548c <code>index2<\/code>\u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u5047\u8bbe\u6bcf\u4e2a\u8f93\u5165 <strong>\u53ea\u5bf9\u5e94\u552f\u4e00\u7684\u7b54\u6848<\/strong> \uff0c\u800c\u4e14\u4f60 <strong>\u4e0d\u53ef\u4ee5<\/strong> \u91cd\u590d\u4f7f\u7528\u76f8\u540c\u7684\u5143\u7d20\u3002<\/p>\n<p>\u4f60\u6240\u8bbe\u8ba1\u7684\u89e3\u51b3\u65b9\u6848\u5fc5\u987b\u53ea\u4f7f\u7528\u5e38\u91cf\u7ea7\u7684\u989d\u5916\u7a7a\u95f4\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-11\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5c5e\u4e8e\u6b63\u5e38\u7684\u53cc\u6307\u9488<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-23\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;int&gt; twoSum(vector&lt;int&gt;&amp; numbers, int target) {\n        \n        int left = 0;\n        int right = numbers.size() -1;\n        while (left &lt; right)\n        {\n            int sum = numbers[left] + numbers[right];\n            if (target == sum)\n            {\n                return { left + 1,right + 1 };\n            }\n            else\n            {\n                if (sum &lt; target)\n                {\n                    left++;\n                }\n                else\n                {\n                    if (sum &gt; target )\n                        right--;\n                }\n            }\n\n        }\n\n        return {};\n\n    }\n};\n<\/code><\/pre>\n<h3 id=\"\u76db\u6c34\u6700\u591a\u7684\u5bb9\u5668\">\u76db\u6c34\u6700\u591a\u7684\u5bb9\u5668<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-24\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u957f\u5ea6\u4e3a <code>n<\/code> \u7684\u6574\u6570\u6570\u7ec4 <code>height<\/code> \u3002\u6709 <code>n<\/code> \u6761\u5782\u7ebf\uff0c\u7b2c <code>i<\/code> \u6761\u7ebf\u7684\u4e24\u4e2a\u7aef\u70b9\u662f <code>(i, 0)<\/code> \u548c <code>(i, height[i])<\/code> \u3002<\/p>\n<p>\u627e\u51fa\u5176\u4e2d\u7684\u4e24\u6761\u7ebf\uff0c\u4f7f\u5f97\u5b83\u4eec\u4e0e <code>x<\/code> \u8f74\u5171\u540c\u6784\u6210\u7684\u5bb9\u5668\u53ef\u4ee5\u5bb9\u7eb3\u6700\u591a\u7684\u6c34\u3002<\/p>\n<p>\u8fd4\u56de\u5bb9\u5668\u53ef\u4ee5\u50a8\u5b58\u7684\u6700\u5927\u6c34\u91cf\u3002<\/p>\n<p><strong>\u8bf4\u660e\uff1a<\/strong>\u4f60\u4e0d\u80fd\u503e\u659c\u5bb9\u5668\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-12\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u672c\u9898\u548c\u63a5\u96e8\u6c34\u7684\u533a\u522b\u5728\u4e8e \u63a5\u96e8\u6c34\u9700\u8981\u8003\u8651\u6bcf\u4e00\u5757\u80fd\u79f0\u591a\u5c11\u6c34,\u800c\u8fd9\u9053\u9898\u53ea\u9700\u8981\u627e\u5230 \u6240\u79f0\u6700\u5927\u533a\u57df\u5c31\u884c\u4e86,\u4e5f\u5c31\u662f\u53ea\u9700\u8981\u627e\u5230\u4e24\u8fb9<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-24\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    int maxArea(vector&lt;int&gt;&amp; height) {\n        int l = 0, r = height.size() - 1;\n        int ans = 0;\n        while (l &lt; r) {\n            int area = min(height[l], height[r]) * (r - l);\n            ans = max(ans, area);\n            if (height[l] &lt;= height[r]) {\n                ++l;\n            }\n            else {\n                --r;\n            }\n        }\n        return ans;\n    }\n};\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/aliyun-lc-upload.oss-cn-hangzhou.aliyuncs.com\/aliyun-lc-upload\/uploads\/2018\/07\/25\/question_11.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/aliyun-lc-upload.oss-cn-hangzhou.aliyuncs.com\/aliyun-lc-upload\/uploads\/2018\/07\/25\/question_11.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1a[1,8,6,2,5,4,8,3,7]\n\u8f93\u51fa\uff1a49 \n\u89e3\u91ca\uff1a\u56fe\u4e2d\u5782\u76f4\u7ebf\u4ee3\u8868\u8f93\u5165\u6570\u7ec4 [1,8,6,2,5,4,8,3,7]\u3002\u5728\u6b64\u60c5\u51b5\u4e0b\uff0c\u5bb9\u5668\u80fd\u591f\u5bb9\u7eb3\u6c34\uff08\u8868\u793a\u4e3a\u84dd\u8272\u90e8\u5206\uff09\u7684\u6700\u5927\u503c\u4e3a 49\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aheight = [1,1]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<h3 id=\"\u4e09\u6570\u4e4b\u548c\">\u4e09\u6570\u4e4b\u548c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-25\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \uff0c\u5224\u65ad\u662f\u5426\u5b58\u5728\u4e09\u5143\u7ec4 <code>[nums[i], nums[j], nums[k]]<\/code> \u6ee1\u8db3 <code>i != j<\/code>\u3001<code>i != k<\/code> \u4e14 <code>j != k<\/code> \uff0c\u540c\u65f6\u8fd8\u6ee1\u8db3 <code>nums[i] + nums[j] + nums[k] == 0<\/code> \u3002\u8bf7<\/p>\n<p>\u4f60\u8fd4\u56de\u6240\u6709\u548c\u4e3a <code>0<\/code> \u4e14\u4e0d\u91cd\u590d\u7684\u4e09\u5143\u7ec4\u3002<\/p>\n<p><strong>\u6ce8\u610f\uff1a<\/strong>\u7b54\u6848\u4e2d\u4e0d\u53ef\u4ee5\u5305\u542b\u91cd\u590d\u7684\u4e09\u5143\u7ec4\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-13\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-25\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\/\/\u7075\u795e\u7684\u65b9\u6cd5\nclass Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; threeSum(vector&lt;int&gt;&amp; nums) {\n        ranges::sort(nums);\n        vector&lt;vector&lt;int&gt;&gt; ans;\n        int n = nums.size();\n        for (int i = 0; i &lt; n - 2; i++) {\n            int x = nums[i];\n            if (i &amp;&amp; x == nums[i - 1]) continue; \/\/ \u8df3\u8fc7\u91cd\u590d\u6570\u5b57\n            if (x + nums[i + 1] + nums[i + 2] &gt; 0) break; \/\/ \u4f18\u5316\u4e00 \u56e0\u4e3a\u6211\u4eec\u5df2\u7ecf\u6392\u8fc7\u5e8f\u4e86\n            if (x + nums[n - 2] + nums[n - 1] &lt; 0) continue; \/\/ \u4f18\u5316\u4e8c\n            int j = i + 1, k = n - 1;\n            while (j &lt; k) {\n                int s = x + nums[j] + nums[k];\n                if (s &gt; 0) {\n                    k--;\n                } else if (s &lt; 0) {\n                    j++;\n                } else {\n                    ans.push_back({x, nums[j], nums[k]});\n                    for (j++; j &lt; k &amp;&amp; nums[j] == nums[j - 1]; j++); \/\/ \u8df3\u8fc7\u91cd\u590d\u6570\u5b57\n                    for (k--; k &gt; j &amp;&amp; nums[k] == nums[k + 1]; k--); \/\/ \u8df3\u8fc7\u91cd\u590d\u6570\u5b57\n                }\n            }\n        }\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [-1,0,1,2,-1,-4]\n\u8f93\u51fa\uff1a[[-1,-1,2],[-1,0,1]]\n\u89e3\u91ca\uff1a\nnums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 \u3002\nnums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 \u3002\nnums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 \u3002\n\u4e0d\u540c\u7684\u4e09\u5143\u7ec4\u662f [-1,0,1] \u548c [-1,-1,2] \u3002\n\u6ce8\u610f\uff0c\u8f93\u51fa\u7684\u987a\u5e8f\u548c\u4e09\u5143\u7ec4\u7684\u987a\u5e8f\u5e76\u4e0d\u91cd\u8981\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [0,1,1]\n\u8f93\u51fa\uff1a[]\n\u89e3\u91ca\uff1a\u552f\u4e00\u53ef\u80fd\u7684\u4e09\u5143\u7ec4\u548c\u4e0d\u4e3a 0 \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [0,0,0]\n\u8f93\u51fa\uff1a[[0,0,0]]\n\u89e3\u91ca\uff1a\u552f\u4e00\u53ef\u80fd\u7684\u4e09\u5143\u7ec4\u548c\u4e3a 0 \u3002\n<\/code><\/pre>\n<h3 id=\"\u73af\u5f62\u94fe\u8868\">\u73af\u5f62\u94fe\u8868<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-26\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u94fe\u8868\u7684\u5934\u8282\u70b9 <code>head<\/code> \uff0c\u5224\u65ad\u94fe\u8868\u4e2d\u662f\u5426\u6709\u73af\u3002<\/p>\n<p>\u5982\u679c\u94fe\u8868\u4e2d\u6709\u67d0\u4e2a\u8282\u70b9\uff0c\u53ef\u4ee5\u901a\u8fc7\u8fde\u7eed\u8ddf\u8e2a <code>next<\/code> \u6307\u9488\u518d\u6b21\u5230\u8fbe\uff0c\u5219\u94fe\u8868\u4e2d\u5b58\u5728\u73af\u3002 \u4e3a\u4e86\u8868\u793a\u7ed9\u5b9a\u94fe\u8868\u4e2d\u7684\u73af\uff0c\u8bc4\u6d4b\u7cfb\u7edf\u5185\u90e8\u4f7f\u7528\u6574\u6570 <code>pos<\/code> \u6765\u8868\u793a\u94fe\u8868\u5c3e\u8fde\u63a5\u5230\u94fe\u8868\u4e2d\u7684\u4f4d\u7f6e\uff08\u7d22\u5f15\u4ece 0 \u5f00\u59cb\uff09\u3002<strong>\u6ce8\u610f\uff1a<code>pos<\/code> \u4e0d\u4f5c\u4e3a\u53c2\u6570\u8fdb\u884c\u4f20\u9012<\/strong> \u3002\u4ec5\u4ec5\u662f\u4e3a\u4e86\u6807\u8bc6\u94fe\u8868\u7684\u5b9e\u9645\u60c5\u51b5\u3002<\/p>\n<p><em>\u5982\u679c\u94fe\u8868\u4e2d\u5b58\u5728\u73af<\/em> \uff0c\u5219\u8fd4\u56de <code>true<\/code> \u3002 \u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-14\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><code>slow<\/code> \u6307\u9488\u6bcf\u6b21\u524d\u8fdb\u4e00\u6b65\uff0c\u800c <code>fast<\/code> \u6307\u9488\u6bcf\u6b21\u524d\u8fdb\u4e24\u6b65\u3002\u5982\u679c\u94fe\u8868\u4e2d\u5b58\u5728\u73af\uff0c\u5b83\u4eec\u6700\u7ec8\u4f1a\u76f8\u9047\u3002\u5982\u679c <code>fast<\/code> \u6307\u9488\u5230\u8fbe\u94fe\u8868\u7684\u672b\u5c3e\uff08\u5373 <code>fast<\/code> \u6216 <code>fast-&gt;next<\/code> \u4e3a <code>nullptr<\/code>\uff09\uff0c\u5219\u8868\u793a\u94fe\u8868\u4e2d\u6ca1\u6709\u73af\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-26\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    bool hasCycle(ListNode* head) {\n        if (head == nullptr || head-&gt;next == nullptr) {\n            return false;\n        }\n\n        ListNode* slow = head;\n        ListNode* fast = head-&gt;next;\n\n        while (slow != fast) {\n            if (fast == nullptr || fast-&gt;next == nullptr) {\n                return false;\n            }\n            slow = slow-&gt;next;\n            fast = fast-&gt;next-&gt;next;\n        }\n\n        return true;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2018\/12\/07\/circularlinkedlist.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2018\/12\/07\/circularlinkedlist.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [3,2,0,-4], pos = 1\n\u8f93\u51fa\uff1atrue\n\u89e3\u91ca\uff1a\u94fe\u8868\u4e2d\u6709\u4e00\u4e2a\u73af\uff0c\u5176\u5c3e\u90e8\u8fde\u63a5\u5230\u7b2c\u4e8c\u4e2a\u8282\u70b9\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2018\/12\/07\/circularlinkedlist_test2.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2018\/12\/07\/circularlinkedlist_test2.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1,2], pos = 0\n\u8f93\u51fa\uff1atrue\n\u89e3\u91ca\uff1a\u94fe\u8868\u4e2d\u6709\u4e00\u4e2a\u73af\uff0c\u5176\u5c3e\u90e8\u8fde\u63a5\u5230\u7b2c\u4e00\u4e2a\u8282\u70b9\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2018\/12\/07\/circularlinkedlist_test3.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2018\/12\/07\/circularlinkedlist_test3.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1], pos = -1\n\u8f93\u51fa\uff1afalse\n\u89e3\u91ca\uff1a\u94fe\u8868\u4e2d\u6ca1\u6709\u73af\u3002\n<\/code><\/pre>\n<h3 id=\"\u4e24\u6570\u76f8\u52a0\">\u4e24\u6570\u76f8\u52a0<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-27\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e24\u4e2a <strong>\u975e\u7a7a<\/strong> \u7684\u94fe\u8868\uff0c\u8868\u793a\u4e24\u4e2a\u975e\u8d1f\u7684\u6574\u6570\u3002\u5b83\u4eec\u6bcf\u4f4d\u6570\u5b57\u90fd\u662f\u6309\u7167 <strong>\u9006\u5e8f<\/strong> \u7684\u65b9\u5f0f\u5b58\u50a8\u7684\uff0c\u5e76\u4e14\u6bcf\u4e2a\u8282\u70b9\u53ea\u80fd\u5b58\u50a8 <strong>\u4e00\u4f4d<\/strong> \u6570\u5b57\u3002<\/p>\n<p>\u8bf7\u4f60\u5c06\u4e24\u4e2a\u6570\u76f8\u52a0\uff0c\u5e76\u4ee5\u76f8\u540c\u5f62\u5f0f\u8fd4\u56de\u4e00\u4e2a\u8868\u793a\u548c\u7684\u94fe\u8868\u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u5047\u8bbe\u9664\u4e86\u6570\u5b57 0 \u4e4b\u5916\uff0c\u8fd9\u4e24\u4e2a\u6570\u90fd\u4e0d\u4f1a\u4ee5 0 \u5f00\u5934\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-15\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u7531\u4e8e\u8f93\u5165\u7684\u4e24\u4e2a\u94fe\u8868\u90fd\u662f\u9006\u5e8f\u5b58\u50a8\u6570\u5b57\u7684\u4f4d\u6570\u7684\uff0c\u56e0\u6b64\u4e24\u4e2a\u94fe\u8868\u4e2d\u540c\u4e00\u4f4d\u7f6e\u7684\u6570\u5b57\u53ef\u4ee5\u76f4\u63a5\u76f8\u52a0\u3002<\/p>\n<p>\u6211\u4eec\u540c\u65f6\u904d\u5386\u4e24\u4e2a\u94fe\u8868\uff0c\u9010\u4f4d\u8ba1\u7b97\u5b83\u4eec\u7684\u548c\uff0c\u5e76\u4e0e\u5f53\u524d\u4f4d\u7f6e\u7684\u8fdb\u4f4d\u503c\u76f8\u52a0\u3002\u5177\u4f53\u800c\u8a00\uff0c\u5982\u679c\u5f53\u524d\u4e24\u4e2a\u94fe\u8868\u5904\u76f8\u5e94\u4f4d\u7f6e\u7684\u6570\u5b57\u4e3a n1,n2\uff0c\u8fdb\u4f4d\u503c\u4e3a <code>carry<\/code>\uff0c\u5219\u5b83\u4eec\u7684\u548c\u4e3a n1+n2+carry\u5176\u4e2d\uff0c\u7b54\u6848\u94fe\u8868\u5904\u76f8\u5e94\u4f4d\u7f6e\u7684\u6570\u5b57\u4e3a <code>(n1+n2+carry)\u200amod\u200a10<\/code>\uff0c\u800c\u65b0\u7684\u8fdb\u4f4d\u503c\u4e3a <code>(n1+n2+carry)\u200a\/\u200a10<\/code><\/p>\n<p>\u5982\u679c\u4e24\u4e2a\u94fe\u8868\u7684\u957f\u5ea6\u4e0d\u540c\uff0c\u5219\u53ef\u4ee5\u8ba4\u4e3a\u957f\u5ea6\u77ed\u7684\u94fe\u8868\u7684\u540e\u9762\u6709\u82e5\u5e72\u4e2a 0 \u3002<\/p>\n<p>\u6b64\u5916\uff0c\u5982\u679c\u94fe\u8868\u904d\u5386\u7ed3\u675f\u540e\uff0c\u6709 carry&gt;0\uff0c\u8fd8\u9700\u8981\u5728\u7b54\u6848\u94fe\u8868\u7684\u540e\u9762\u9644\u52a0\u4e00\u4e2a\u8282\u70b9\uff0c\u8282\u70b9\u7684\u503c\u4e3a <code>carry<\/code>\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-27\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nstruct ListNode {\n    int val;\n    ListNode *next;\n    ListNode() : val(0), next(nullptr) {}\n    ListNode(int x) : val(x), next(nullptr) {}\n    ListNode(int x, ListNode *next) : val(x), next(next) {}\n};\n \nclass Solution {\npublic:\n    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {\n\n        ListNode* head = new ListNode();\n        ListNode* tail = new ListNode();\n        \/\/ListNode* head = nullptr, * tail = nullptr;\n        int carry = 0;\n        while (l1 || l2)\n        {\n            int n1 = l1 ? l1-&gt;val : 0;\n            int n2 = l2 ? l2-&gt;val : 0;\n\n            int sum = n1 + n2 + carry;\n\n            if (head == nullptr)\n            {\n                head = tail = new ListNode(sum % 10);\n            }\n            else\n            {\n                tail-&gt;next = new ListNode(sum % 10);\n                tail = tail-&gt;next;\n            }\n\n            carry = sum \/ 10;\n\n            if (l1 != nullptr)\n                l1 = l1-&gt;next;\n\n            if (l2 != nullptr)\n                l2 = l2-&gt;next;\n\n        }\n        if (carry &gt; 0)\n                tail-&gt;next = new ListNode(carry);\n\n        return head;\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2021\/01\/02\/addtwonumber1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2021\/01\/02\/addtwonumber1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1al1 = [2,4,3], l2 = [5,6,4]\n\u8f93\u51fa\uff1a[7,0,8]\n\u89e3\u91ca\uff1a342 + 465 = 807.\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1al1 = [0], l2 = [0]\n\u8f93\u51fa\uff1a[0]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1al1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]\n\u8f93\u51fa\uff1a[8,9,9,9,0,0,0,1]\n<\/code><\/pre>\n<h3 id=\"\u5408\u5e76\u4e24\u4e2a\u6709\u5e8f\u94fe\u8868\">\u5408\u5e76\u4e24\u4e2a\u6709\u5e8f\u94fe\u8868<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-28\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u5c06\u4e24\u4e2a\u5347\u5e8f\u94fe\u8868\u5408\u5e76\u4e3a\u4e00\u4e2a\u65b0\u7684 <strong>\u5347\u5e8f<\/strong> \u94fe\u8868\u5e76\u8fd4\u56de\u3002\u65b0\u94fe\u8868\u662f\u901a\u8fc7\u62fc\u63a5\u7ed9\u5b9a\u7684\u4e24\u4e2a\u94fe\u8868\u7684\u6240\u6709\u8282\u70b9\u7ec4\u6210\u7684\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-16\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5728\u8fd9\u91cc\u9700\u8981\u6ce8\u610f\uff0c\u865a\u62df\u5934\u8282\u70b9\u7684\u5b66\u4e60<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-28\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nstruct ListNode {\n    int val;\n    ListNode *next;\n    ListNode() : val(0), next(nullptr) {}\n    ListNode(int x) : val(x), next(nullptr) {}\n    ListNode(int x, ListNode *next) : val(x), next(next) {}\n};\n\nclass Solution {\npublic:\n    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {\n        ListNode* preHead = new ListNode(-1);\n\n        ListNode* prev = preHead;\n        while (l1 != nullptr &amp;&amp; l2 != nullptr) {\n            if (l1-&gt;val &lt; l2-&gt;val) {\n                prev-&gt;next = l1;\n                l1 = l1-&gt;next;\n            }\n            else {\n                prev-&gt;next = l2;\n                l2 = l2-&gt;next;\n            }\n            prev = prev-&gt;next;\n        }\n\n        \/\/ \u5408\u5e76\u540e l1 \u548c l2 \u6700\u591a\u53ea\u6709\u4e00\u4e2a\u8fd8\u672a\u88ab\u5408\u5e76\u5b8c\uff0c\u6211\u4eec\u76f4\u63a5\u5c06\u94fe\u8868\u672b\u5c3e\u6307\u5411\u672a\u5408\u5e76\u5b8c\u7684\u94fe\u8868\u5373\u53ef\n        prev-&gt;next = l1 == nullptr ? l2 : l1;\n\n        return preHead-&gt;next;\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/10\/03\/merge_ex1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/10\/03\/merge_ex1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1al1 = [1,2,4], l2 = [1,3,4]\n\u8f93\u51fa\uff1a[1,1,2,3,4,4]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1al1 = [], l2 = []\n\u8f93\u51fa\uff1a[]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1al1 = [], l2 = [0]\n\u8f93\u51fa\uff1a[0]\n<\/code><\/pre>\n<h3 id=\"\u53cd\u8f6c\u94fe\u8868\u2171\">\u53cd\u8f6c\u94fe\u8868\u2161<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-29\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u5355\u94fe\u8868\u7684\u5934\u6307\u9488 <code>head<\/code> \u548c\u4e24\u4e2a\u6574\u6570 <code>left<\/code> \u548c <code>right<\/code> \uff0c\u5176\u4e2d <code>left &lt;= right<\/code> \u3002\u8bf7\u4f60\u53cd\u8f6c\u4ece\u4f4d\u7f6e <code>left<\/code> \u5230\u4f4d\u7f6e <code>right<\/code> \u7684\u94fe\u8868\u8282\u70b9\uff0c\u8fd4\u56de <strong>\u53cd\u8f6c\u540e\u7684\u94fe\u8868<\/strong> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-17\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><strong>\u4e00\u6b65\u6b65\u6a21\u62df\u4e00\u4e0b \u8fd9\u9053\u9898\u5f88\u5173\u952e<\/strong><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-29\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nstruct ListNode {\n    int val;\n    ListNode *next;\n    ListNode() : val(0), next(nullptr) {}\n    ListNode(int x) : val(x), next(nullptr) {}\n    ListNode(int x, ListNode *next) : val(x), next(next) {}\n};\n\nclass Solution {\nprivate:\n    void reverseLinkedList(ListNode* head) {\n        \/\/ \u4e5f\u53ef\u4ee5\u4f7f\u7528\u9012\u5f52\u53cd\u8f6c\u4e00\u4e2a\u94fe\u8868\n        ListNode* pre = nullptr;\n        ListNode* cur = head;\n\n        while (cur != nullptr) {\n            ListNode* next = cur-&gt;next;\n            cur-&gt;next = pre;\n            pre = cur;\n            cur = next;\n        }\n    }\n\npublic:\n    ListNode* reverseBetween(ListNode* head, int left, int right) {\n        \/\/ \u56e0\u4e3a\u5934\u8282\u70b9\u6709\u53ef\u80fd\u53d1\u751f\u53d8\u5316\uff0c\u4f7f\u7528\u865a\u62df\u5934\u8282\u70b9\u53ef\u4ee5\u907f\u514d\u590d\u6742\u7684\u5206\u7c7b\u8ba8\u8bba\n        ListNode* dummyNode = new ListNode(-1);\n        dummyNode-&gt;next = head;\n\n        ListNode* pre = dummyNode;\n        \/\/ \u7b2c 1 \u6b65\uff1a\u4ece\u865a\u62df\u5934\u8282\u70b9\u8d70 left - 1 \u6b65\uff0c\u6765\u5230 left \u8282\u70b9\u7684\u524d\u4e00\u4e2a\u8282\u70b9\n        \/\/ \u5efa\u8bae\u5199\u5728 for \u5faa\u73af\u91cc\uff0c\u8bed\u4e49\u6e05\u6670\n        for (int i = 0; i &lt; left - 1; i++) {\n            pre = pre-&gt;next;\n        }\n\n        \/\/ \u7b2c 2 \u6b65\uff1a\u4ece pre \u518d\u8d70 right - left + 1 \u6b65\uff0c\u6765\u5230 right \u8282\u70b9\n        ListNode* rightNode = pre;\n        for (int i = 0; i &lt; right - left + 1; i++) {\n            rightNode = rightNode-&gt;next;\n        }\n\n        \/\/ \u7b2c 3 \u6b65\uff1a\u5207\u65ad\u51fa\u4e00\u4e2a\u5b50\u94fe\u8868\uff08\u622a\u53d6\u94fe\u8868\uff09\n        ListNode* leftNode = pre-&gt;next;\n        ListNode* curr = rightNode-&gt;next;\n\n        \/\/ \u6ce8\u610f\uff1a\u5207\u65ad\u94fe\u63a5\n        pre-&gt;next = nullptr;\n        rightNode-&gt;next = nullptr;\n\n        \/\/ \u7b2c 4 \u6b65\uff1a\u540c\u7b2c 206 \u9898\uff0c\u53cd\u8f6c\u94fe\u8868\u7684\u5b50\u533a\u95f4\n        reverseLinkedList(leftNode);\n\n        \/\/ \u7b2c 5 \u6b65\uff1a\u63a5\u56de\u5230\u539f\u6765\u7684\u94fe\u8868\u4e2d\n        pre-&gt;next = rightNode;\n        leftNode-&gt;next = curr;\n        return dummyNode-&gt;next;\n    }\n};\n\n\n\nclass Solution {\npublic:\n    ListNode* reverseBetween(ListNode* head, int left, int right) {\n        \/\/ \u8bbe\u7f6e dummyNode \u662f\u8fd9\u4e00\u7c7b\u95ee\u9898\u7684\u4e00\u822c\u505a\u6cd5\n        ListNode* dummyNode = new ListNode(-1);\n        dummyNode-&gt;next = head;\n        ListNode* pre = dummyNode;\n        for (int i = 0; i &lt; left - 1; i++) {\n            pre = pre-&gt;next;\n        }\n        ListNode* cur = pre-&gt;next;\n        ListNode* next;\n        \/\/\u8fd9\u4e2a\u5faa\u73af\u5c06\u6267\u884c right - left \u6b21\uff0c\u5373\u9700\u8981\u53cd\u8f6c\u7684\u8282\u70b9\u6570\u91cf\u3002\n        for (int i = 0; i &lt; right - left; i++) {\n            next = cur-&gt;next;\n            cur-&gt;next = next-&gt;next;\n            next-&gt;next = pre-&gt;next;\n\n            pre-&gt;next = next;\n\n        }\n        return dummyNode-&gt;next;\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/02\/19\/rev2ex2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/02\/19\/rev2ex2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1,2,3,4,5], left = 2, right = 4\n\u8f93\u51fa\uff1a[1,4,3,2,5]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [5], left = 1, right = 1\n\u8f93\u51fa\uff1a[5]\n<\/code><\/pre>\n<h3 id=\"k\u4e2a\u4e00\u7ec4\u7ffb\u8f6c\u94fe\u8868\">K\u4e2a\u4e00\u7ec4\u7ffb\u8f6c\u94fe\u8868<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-30\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u94fe\u8868\u7684\u5934\u8282\u70b9 <code>head<\/code> \uff0c\u6bcf <code>k<\/code> \u4e2a\u8282\u70b9\u4e00\u7ec4\u8fdb\u884c\u7ffb\u8f6c\uff0c\u8bf7\u4f60\u8fd4\u56de\u4fee\u6539\u540e\u7684\u94fe\u8868\u3002<\/p>\n<p><code>k<\/code> \u662f\u4e00\u4e2a\u6b63\u6574\u6570\uff0c\u5b83\u7684\u503c\u5c0f\u4e8e\u6216\u7b49\u4e8e\u94fe\u8868\u7684\u957f\u5ea6\u3002\u5982\u679c\u8282\u70b9\u603b\u6570\u4e0d\u662f <code>k<\/code> \u7684\u6574\u6570\u500d\uff0c\u90a3\u4e48\u8bf7\u5c06\u6700\u540e\u5269\u4f59\u7684\u8282\u70b9\u4fdd\u6301\u539f\u6709\u987a\u5e8f\u3002<\/p>\n<p>\u4f60\u4e0d\u80fd\u53ea\u662f\u5355\u7eaf\u7684\u6539\u53d8\u8282\u70b9\u5185\u90e8\u7684\u503c\uff0c\u800c\u662f\u9700\u8981\u5b9e\u9645\u8fdb\u884c\u8282\u70b9\u4ea4\u6362\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-18\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u4f7f\u7528\u8fed\u4ee3\u7684\u65b9\u5f0f\u53bb\u7ffb\u8f6c\u94fe\u8868<\/p>\n<p>\u53ea\u80fd\u8bf4\u4ee5\u4e3a\u4f1a\u4e86 \u5b9e\u9645\u4e0a\u6ca1\u6709\u4f1a<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic.vanforever.com.cn\/LeetCode\/Animation\/2024091101.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic.vanforever.com.cn\/LeetCode\/Animation\/2024091101.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" \/><\/div><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-30\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;tuple&gt;\n\nusing namespace std;\n\nstruct ListNode {\n    int val;\n    ListNode *next;\n    ListNode() : val(0), next(nullptr) {}\n    ListNode(int x) : val(x), next(nullptr) {}\n    ListNode(int x, ListNode *next) : val(x), next(next) {}\n};\n\nclass Solution {\npublic:\n    \/\/ \u7ffb\u8f6c\u4e00\u4e2a\u5b50\u94fe\u8868\uff0c\u5e76\u4e14\u8fd4\u56de\u65b0\u7684\u5934\u4e0e\u5c3e\n    pair&lt;ListNode*, ListNode*&gt; myReverse(ListNode* head, ListNode* tail) {\n        ListNode* prev = tail-&gt;next;\n        ListNode* cur = head;\n        while (prev != tail) {\n            ListNode* nex = cur-&gt;next;\n            cur-&gt;next = prev;\n            prev = cur;\n            cur = nex;\n        }\n        return { tail, head };\n    }\n\n    ListNode* reverseKGroup(ListNode* head, int k) {\n        ListNode* hair = new ListNode(0);\n        hair-&gt;next = head;\n        ListNode* pre = hair;\n\n        while (head) {\n            ListNode* tail = pre;\n            \/\/ \u67e5\u770b\u5269\u4f59\u90e8\u5206\u957f\u5ea6\u662f\u5426\u5927\u4e8e\u7b49\u4e8e k\n            for (int i = 0; i &lt; k; ++i) {\n                tail = tail-&gt;next;\n                if (!tail) {\n                    return hair-&gt;next;\n                }\n            }\n            ListNode* nex = tail-&gt;next;\n            \/\/ \u8fd9\u91cc\u662f C++17 \u7684\u5199\u6cd5\uff0c\u4e5f\u53ef\u4ee5\u5199\u6210\n            \/\/ pair&lt;ListNode*, ListNode*&gt; result = myReverse(head, tail);\n            \/\/ head = result.first;\n            \/\/ tail = result.second;\n            tie(head, tail) = myReverse(head, tail);\n            \/\/ \u628a\u5b50\u94fe\u8868\u91cd\u65b0\u63a5\u56de\u539f\u94fe\u8868\n            pre-&gt;next = head;\n            tail-&gt;next = nex;\n            pre = tail;\n            head = tail-&gt;next;\n        }\n\n        return hair-&gt;next;\n    }\n};\n\n\/\/\u7075\u795e\u7684\nclass Solution {\n    public ListNode reverseKGroup(ListNode head, int k) {\n        int n = 0; \n        for (ListNode cur = head; cur != null; cur = cur.next) {\n            n++;\n        }\n        \/\/preHead \u662f\u7ffb\u8f6c\u533a\u95f4\u7684\u4e0a\u4e2anode\n        ListNode dummy = new ListNode(0, head), preHead = dummy;\n        ListNode pre = null, cur = head;\n        for (; n &gt;= k; n -= k) {\n            \/\/\u7ffb\u8f6c\u4e4b\u540e pre \u662f newHead\uff0ccur \u662f\u4e0b\u4e2a\u533a\u95f4\u7684 head\n            for (int i = 0; i &lt; k; ++i) {\n                ListNode next = cur.next;\n                cur.next = pre;\n                pre = cur;\n                cur = next;\n            }\n            \/\/\u8fd9\u4e2a\u65f6\u5019 preHead.next \u5df2\u7ecf\u88ab\u7ffb\u8f6c\uff0c\u662f\u533a\u95f4\u7684\u7ed3\u5c3e\n            ListNode tail = preHead.next;\n            \/\/cur \u662f\u4e0b\u4e2a\u533a\u95f4\u7684 head\n            tail.next = cur;\n            \/\/pre\u662f\u533a\u95f4\u7684newHead\n            preHead.next = pre;\n            \/\/preHead\u6765\u5230\u6b64\u533a\u95f4\u7684\u7ed3\u5c3e\uff0c\u9a6c\u4e0a\u8981\u64cd\u4f5c\u4e0b\u4e00\u533a\u95f4\u4e86\n            preHead = tail;\n        }\n        return dummy.next;\n    }\n}\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/10\/03\/reverse_ex1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/10\/03\/reverse_ex1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1,2,3,4,5], k = 2\n\u8f93\u51fa\uff1a[2,1,4,3,5]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/10\/03\/reverse_ex2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/10\/03\/reverse_ex2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1,2,3,4,5], k = 3\n\u8f93\u51fa\uff1a[3,2,1,4,5]\n<\/code><\/pre>\n<h3 id=\"\u5220\u9664\u94fe\u8868\u7684\u5012\u6570\u7b2cn\u4e2a\u8282\u70b9\">\u5220\u9664\u94fe\u8868\u7684\u5012\u6570\u7b2cN\u4e2a\u8282\u70b9<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-31\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u94fe\u8868\uff0c\u5220\u9664\u94fe\u8868\u7684\u5012\u6570\u7b2c <code>n<\/code> \u4e2a\u7ed3\u70b9\uff0c\u5e76\u4e14\u8fd4\u56de\u94fe\u8868\u7684\u5934\u7ed3\u70b9\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-19\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6211=\u6211\u4eec\u7740\u91cd\u8bf4\u4e00\u4e0b\u4e00\u6b21\u904d\u5386\u7684 <strong>\u53cc\u6307\u9488<\/strong>\u3002\u6162\u6307\u9488\u548c\u5feb\u6307\u9488\u4e4b\u95f4\u8981\u76f8\u5dee\u4e24\u4e2a\u8282\u70b9\uff08\u4e5f\u5c31\u662f\u76f8\u5dee\u4e09\u4e2anext\uff09<\/p>\n<p>\u56e0\u4e3a\u6700\u540e\u6211\u4eec\u7684\u5feb\u6307\u9488\u4e3a<strong>nullptr<\/strong>\u65f6 \uff0c\u6162\u6307\u9488\u521a\u521a\u597d\u6307\u5411\u9700\u8981\u88ab\u5220\u9664\u8282\u70b9\u7684\u524d\u4e00\u4e2a\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-31\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;stack&gt;\n\nusing namespace std;\n\nstruct ListNode {\n    int val;\n    ListNode *next;\n    ListNode() : val(0), next(nullptr) {}\n    ListNode(int x) : val(x), next(nullptr) {}\n    ListNode(int x, ListNode *next) : val(x), next(next) {}\n};\n\n\/\/\u904d\u5386\u5bfb\u627e\u957f\u5ea6\nclass Solution {\npublic:\n    ListNode* removeNthFromEnd(ListNode* head, int n) {\n\n        ListNode* copyhead = new ListNode(-1);\n        copyhead-&gt;next = head;\n        int size = 0;\n\n        ListNode* cur = copyhead;\n        while (cur != nullptr)\n        {\n            size++;\n            cur = cur-&gt;next;\n        }\n\n        ListNode* pre = copyhead;\n        for (int i = 0; i &lt; size - n - 1; i++)\n        {\n            pre = pre-&gt;next;\n        }\n\n        pre-&gt;next = pre-&gt;next-&gt;next;\n        \n        return copyhead-&gt;next;\n    }\n};\n\n\/\/\u6808\nclass Solution {\npublic:\n    ListNode* removeNthFromEnd(ListNode* head, int n) {\n        \n        ListNode* copyhead = new ListNode(-1);\n        copyhead-&gt;next = head;\n\n        stack&lt;ListNode*&gt; stk;\n\n        ListNode* cur = copyhead;\n        while (cur != nullptr)\n        {\n            stk.push(cur);\n            cur = cur-&gt;next;\n        }\n\n        for (int i = 0; i &lt; n; i++)\n        {\n            stk.pop();\n        }\n\n        ListNode* pre = stk.top();\n        pre-&gt;next = pre-&gt;next-&gt;next;\n\n        ListNode* ans = copyhead-&gt;next;\n        delete copyhead;\n\n        return ans;\n    }\n};\n\n\/\/\u53cc\u6307\u9488\nclass Solution {\npublic:\n    ListNode* removeNthFromEnd(ListNode* head, int n) {\n        ListNode* dummy = new ListNode(0, head);\n        ListNode* first = head;\n        ListNode* second = dummy;\n        for (int i = 0; i &lt; n; ++i) {\n            first = first-&gt;next;\n        }\n        while (first) {\n            first = first-&gt;next;\n            second = second-&gt;next;\n        }\n        second-&gt;next = second-&gt;next-&gt;next;\n        ListNode* ans = dummy-&gt;next;\n\n        delete dummy;\n        return ans;\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/10\/03\/remove_ex1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/10\/03\/remove_ex1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1,2,3,4,5], n = 2\n\u8f93\u51fa\uff1a[1,2,3,5]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1], n = 1\n\u8f93\u51fa\uff1a[]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1,2], n = 1\n\u8f93\u51fa\uff1a[1]\n<\/code><\/pre>\n<h3 id=\"\u5220\u9664\u6392\u5e8f\u94fe\u8868\u4e2d\u91cd\u590d\u5143\u7d20\u2171\">\u5220\u9664\u6392\u5e8f\u94fe\u8868\u4e2d\u91cd\u590d\u5143\u7d20\u2161<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-32\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u5df2\u6392\u5e8f\u7684\u94fe\u8868\u7684\u5934 <code>head<\/code> \uff0c <em>\u5220\u9664\u539f\u59cb\u94fe\u8868\u4e2d\u6240\u6709\u91cd\u590d\u6570\u5b57\u7684\u8282\u70b9\uff0c\u53ea\u7559\u4e0b\u4e0d\u540c\u7684\u6570\u5b57<\/em> \u3002\u8fd4\u56de <em>\u5df2\u6392\u5e8f\u7684\u94fe\u8868<\/em> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-20\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u4e00\u5f00\u59cb\u505a\u7406\u89e3\u9519\u9898\u4e86,\u4ee5\u4e3a\u8981\u5220\u9664\u591a\u4f59\u7684\u91cd\u590d\u5143\u7d20,\u6ca1\u60f3\u5230\u662f\u5168\u90e8\u5220\u9664,\u90a3\u6211\u4eec\u5efa\u7acb\u5b8c\u54d1\u8282\u70b9\u540e\uff0c\u5c31\u5224\u65ad\u4e0b\u4e00\u4e2a \u548c\u4e0b\u4e0b\u4e00\u4e2a\u8282\u70b9\u7684\u503c\u662f\u5426\u76f8\u540c\uff0c\u5982\u679c\u76f8\u540c\uff0c\u90a3\u4e48\u6211\u4eec\u5c31\u8bb0\u5f55\u4e0b\u6765\u5176\u4ee3\u8868\u7684\u503c<code>x<\/code> \uff0c\u7136\u540e\u5224\u65ad<code>cur-&gt;next-&gt;val<\/code>\u662f\u5426\u4e0e\u8bb0\u5f55\u4e0b\u7684\u503c<code>x<\/code>\u76f8\u540c\uff0c\u5982\u679c\u76f8\u540c\uff0c\u4fee\u6539cur-&gt;next\u6240\u6307\u5411\u7684\u4f4d\u7f6e \u6ce8\u610f\u4e0d\u8981\u4fee\u6539cur\u7684\u4f4d\u7f6e\uff0c\u8fd9\u6837\u53ef\u4ee5\u5c06\u591a\u4e2a\u91cd\u590d\u7684\u503c\u5168\u90e8\u5220\u9664,\u76f4\u5230\u9047\u5230\u4e0d\u91cd\u590d\u7684\u503c<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-32\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;unordered_set&gt;\n\nusing namespace std;\n\nstruct ListNode {\n    int val;\n    ListNode *next;\n    ListNode() : val(0), next(nullptr) {}\n    ListNode(int x) : val(x), next(nullptr) {}\n    ListNode(int x, ListNode *next) : val(x), next(next) {}\n};\n\nclass Solution {\npublic:\n    ListNode* deleteDuplicates(ListNode* head) {\n\n        ListNode* dummyNode = new ListNode(-200, head);\n\n        ListNode* cur = dummyNode;\n\n\n        while (cur-&gt;next &amp;&amp; cur-&gt;next-&gt;next)\n        {\n\n            if (cur-&gt;next-&gt;val == cur-&gt;next-&gt;next-&gt;val)\n            {\n                int x = cur-&gt;next-&gt;val;\n\n                while (cur-&gt;next &amp;&amp; cur-&gt;next-&gt;val == x)\n                {\n                    cur-&gt;next = cur-&gt;next-&gt;next;\n\n                }\n            }\n            else\n            {\n                cur = cur-&gt;next;\n            }\n        }\n\n        return dummyNode-&gt;next;\n    }\n};\n\/\/ -1 1 1 1 1 1 2 3 4\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/01\/04\/linkedlist1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/01\/04\/linkedlist1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1,2,3,3,4,4,5]\n\u8f93\u51fa\uff1a[1,2,5]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/01\/04\/linkedlist2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/01\/04\/linkedlist2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1,1,1,2,3]\n\u8f93\u51fa\uff1a[2,3]\n<\/code><\/pre>\n<h3 id=\"\u65cb\u8f6c\u94fe\u8868\">\u65cb\u8f6c\u94fe\u8868<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-33\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u94fe\u8868\u7684\u5934\u8282\u70b9 <code>head<\/code> \uff0c\u65cb\u8f6c\u94fe\u8868\uff0c\u5c06\u94fe\u8868\u6bcf\u4e2a\u8282\u70b9\u5411\u53f3\u79fb\u52a8 <code>k<\/code> \u4e2a\u4f4d\u7f6e\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-21\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6211\u6ca1\u6709\u60f3\u5230\u7684\u70b9\u5728\u4e8e \u53ef\u4ee5\u8bb0\u5f55\u94fe\u8868\u7684\u957f\u5ea6\u7136\u540e\u53bb\u627e\u6700\u540e\u4e00\u4e2a\u8282\u70b9<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-33\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\n\nstruct ListNode {\n    int val;\n    ListNode *next;\n    ListNode() : val(0), next(nullptr) {}\n    ListNode(int x) : val(x), next(nullptr) {}\n    ListNode(int x, ListNode *next) : val(x), next(next) {}\n};\n\nclass Solution {\npublic:\n    ListNode* rotateRight(ListNode* head, int k) {\n        if (k == 0 || head == nullptr || head-&gt;next == nullptr) {\n            return head;\n        }\n        int n = 1;\n        ListNode* iter = head;\n        while (iter-&gt;next != nullptr) {\n            iter = iter-&gt;next;\n            n++;\n        }\n        \/\/1\uff0c2\uff0c3\uff0c4\n        \/\/3 4 1 2\n        int add = n - k % n;\n        if (add == n) {\n            return head;\n        }\n        iter-&gt;next = head;\n        while (add--) {\n            iter = iter-&gt;next;\n        }\n        ListNode* ret = iter-&gt;next;\n        iter-&gt;next = nullptr;\n        return ret;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/13\/rotate1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/13\/rotate1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1,2,3,4,5], k = 2\n\u8f93\u51fa\uff1a[4,5,1,2,3]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/13\/roate2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/13\/roate2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [0,1,2], k = 4\n\u8f93\u51fa\uff1a[2,0,1]\n<\/code><\/pre>\n<h3 id=\"\u5206\u9694\u94fe\u8868\">\u5206\u9694\u94fe\u8868<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-34\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u94fe\u8868\u7684\u5934\u8282\u70b9 <code>head<\/code> \u548c\u4e00\u4e2a\u7279\u5b9a\u503c <code>x<\/code> \uff0c\u8bf7\u4f60\u5bf9\u94fe\u8868\u8fdb\u884c\u5206\u9694\uff0c\u4f7f\u5f97\u6240\u6709 <strong>\u5c0f\u4e8e<\/strong> <code>x<\/code> \u7684\u8282\u70b9\u90fd\u51fa\u73b0\u5728 <strong>\u5927\u4e8e\u6216\u7b49\u4e8e<\/strong> <code>x<\/code> \u7684\u8282\u70b9\u4e4b\u524d\u3002<\/p>\n<p>\u4f60\u5e94\u5f53 <strong>\u4fdd\u7559<\/strong> \u4e24\u4e2a\u5206\u533a\u4e2d\u6bcf\u4e2a\u8282\u70b9\u7684\u521d\u59cb\u76f8\u5bf9\u4f4d\u7f6e\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-22\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6784\u9020\u4e24\u4e2a\u5b50\u94fe\uff0c\u4e00\u4e2a\u8bb0\u5f55\u5c0f\u4e8e\u7684\uff0c\u4e00\u4e2a\u8bb0\u5f55\u5927\u4e8e\u7b49\u4e8e\u7684\uff0c\u6700\u540e\u5c06\u4e24\u4e2a\u94fe\u8868\u5408\u5728\u4e00\u8d77<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-34\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n\nusing namespace std;\n\nstruct ListNode {\n    int val;\n    ListNode *next;\n    ListNode() : val(0), next(nullptr) {}\n    ListNode(int x) : val(x), next(nullptr) {}\n    ListNode(int x, ListNode *next) : val(x), next(next) {}\n};\n\nclass Solution {\npublic:\n    ListNode* partition(ListNode* head, int x) {\n        ListNode* small = new ListNode(0);\n        ListNode* smallHead = small;\n        ListNode* large = new ListNode(0);\n        ListNode* largeHead = large;\n        while (head != nullptr) {\n            if (head-&gt;val &lt; x) {\n                small-&gt;next = head;\n                small = small-&gt;next;\n            }\n            else {\n                large-&gt;next = head;\n                large = large-&gt;next;\n            }\n            head = head-&gt;next;\n        }\n        large-&gt;next = nullptr;\n        small-&gt;next = largeHead-&gt;next;\n        return smallHead-&gt;next;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/01\/04\/partition.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/01\/04\/partition.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1,4,3,2,5,2], x = 3\n\u8f93\u51fa\uff1a[1,2,2,4,3,5]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [2,1], x = 2\n\u8f93\u51fa\uff1a[1,2]\n<\/code><\/pre>\n<h3 id=\"\u79fb\u52a8\u96f6\">\u79fb\u52a8\u96f6<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-35\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u6570\u7ec4 <code>nums<\/code>\uff0c\u7f16\u5199\u4e00\u4e2a\u51fd\u6570\u5c06\u6240\u6709 <code>0<\/code> \u79fb\u52a8\u5230\u6570\u7ec4\u7684\u672b\u5c3e\uff0c\u540c\u65f6\u4fdd\u6301\u975e\u96f6\u5143\u7d20\u7684\u76f8\u5bf9\u987a\u5e8f\u3002<\/p>\n<p><strong>\u8bf7\u6ce8\u610f<\/strong> \uff0c\u5fc5\u987b\u5728\u4e0d\u590d\u5236\u6570\u7ec4\u7684\u60c5\u51b5\u4e0b\u539f\u5730\u5bf9\u6570\u7ec4\u8fdb\u884c\u64cd\u4f5c\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-23\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-35\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    void moveZeroes(vector&lt;int&gt;&amp; nums) {\n\n        int n = nums.size();\n\n        int l = 0, r = 0;\n\n        while (r &lt; n)\n        {\n            if (nums[r] != 0)\n            {\n                swap(nums[l], nums[r]);\n                l++;\n            }\n            r++;\n        }\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: nums = [0,1,0,3,12]\n\u8f93\u51fa: [1,3,12,0,0]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: nums = [0]\n\u8f93\u51fa: [0]\n<\/code><\/pre>\n<h3 id=\"\u56de\u6587\u94fe\u8868\">\u56de\u6587\u94fe\u8868<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-36\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5355\u94fe\u8868\u7684\u5934\u8282\u70b9 <code>head<\/code> \uff0c\u8bf7\u4f60\u5224\u65ad\u8be5\u94fe\u8868\u662f\u5426\u4e3a\u56de\u6587\u94fe\u8868\u3002\u5982\u679c\u662f\uff0c\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-24\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-36\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\n#include &lt;iostream&gt;\n\nusing namespace std;\n\nstruct ListNode {\n    int val;\n    ListNode *next;\n    ListNode() : val(0), next(nullptr) {}\n    ListNode(int x) : val(x), next(nullptr) {}\n    ListNode(int x, ListNode *next) : val(x), next(next) {}\n};\n\nclass Solution {\npublic:\n    ListNode* reverseList(ListNode* head)\n    {\n        ListNode* pre = nullptr;\n        ListNode* cur = head;\n        ListNode* next;\n\n        while (cur)\n        {\n            next = cur-&gt;next;\n            cur-&gt;next = pre;\n            pre = cur;\n            cur = next;\n        }\n\n        return pre;\n    }\n\n    ListNode* FindMid(ListNode* head)\n    {\n        ListNode* fast = head;\n        ListNode* slow = head;\n\n        while (fast &amp;&amp; fast-&gt;next)\n        {\n            fast = fast-&gt;next-&gt;next;\n            slow = slow-&gt;next;\n        }\n\n        return slow;\n    }\n\n\n    bool isPalindrome(ListNode* head) {\n\n        ListNode* mid = FindMid(head);\n        ListNode* head2 = reverseList(mid);\n\n        while (head != mid)\n        {\n            if (head-&gt;val != head2-&gt;val)\n            {\n                return false;\n            }\n\n            head = head-&gt;next;\n            head2 = head2-&gt;next;\n        }\n\n        return true;\n       \n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/03\/03\/pal1linked-list.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/03\/03\/pal1linked-list.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1,2,2,1]\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/03\/03\/pal2linked-list.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/03\/03\/pal2linked-list.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [1,2]\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<p><strong>\u63d0\u793a\uff1a<\/strong><\/p>\n<ul>\n<li>\u94fe\u8868\u4e2d\u8282\u70b9\u6570\u76ee\u5728\u8303\u56f4<code>[1, 105]<\/code> \u5185<\/li>\n<li><code>0 &lt;= Node.val &lt;= 9<\/code><\/li>\n<\/ul>\n<h2 id=\"\u6392\u5e8f\">\u6392\u5e8f<\/h2>\n<h3 id=\"\u6709\u6548\u7684\u5b57\u6bcd\u5f02\u4f4d\u8bcd-2\">\u6709\u6548\u7684\u5b57\u6bcd\u5f02\u4f4d\u8bcd<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-37\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e24\u4e2a\u5b57\u7b26\u4e32 <code>*s*<\/code> \u548c <code>*t*<\/code> \uff0c\u7f16\u5199\u4e00\u4e2a\u51fd\u6570\u6765\u5224\u65ad <code>*t*<\/code> \u662f\u5426\u662f <code>*s*<\/code> \u7684\u5b57\u6bcd\u5f02\u4f4d\u8bcd\u3002<\/p>\n<p><strong>\u6ce8\u610f\uff1a<\/strong>\u82e5 <code>*s*<\/code> \u548c <code>*t*<\/code> \u4e2d\u6bcf\u4e2a\u5b57\u7b26\u51fa\u73b0\u7684\u6b21\u6570\u90fd\u76f8\u540c\uff0c\u5219\u79f0 <code>*s*<\/code> \u548c <code>*t*<\/code> \u4e92\u4e3a\u5b57\u6bcd\u5f02\u4f4d\u8bcd\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-13\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p><code>t<\/code> \u662f <code>s<\/code> \u7684\u5f02\u4f4d\u8bcd\u7b49\u4ef7\u4e8e\u300c\u4e24\u4e2a\u5b57\u7b26\u4e32\u6392\u5e8f\u540e\u76f8\u7b49\u300d\u3002\u56e0\u6b64\u6211\u4eec\u53ef\u4ee5\u5bf9\u5b57\u7b26\u4e32 <code>s<\/code> \u548c <code>t<\/code> \u5206\u522b\u6392\u5e8f\uff0c\u770b\u6392\u5e8f\u540e\u7684\u5b57\u7b26\u4e32\u662f\u5426\u76f8\u7b49\u5373\u53ef\u5224\u65ad\u3002\u6b64\u5916\uff0c\u5982\u679c <code>s<\/code> \u548c <code>t<\/code> \u7684\u957f\u5ea6\u4e0d\u540c\uff0c<code>t<\/code> \u5fc5\u7136\u4e0d\u662f <code>s<\/code> \u7684\u5f02\u4f4d\u8bcd\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-37\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;string&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\n\n\nclass Solution {\npublic:\n    bool isAnagram(string s, string t) {\n        if (s.length() != t.length()) {\n            return false;\n        }\n        sort(s.begin(), s.end());\n        sort(t.begin(), t.end());\n        return s == t;\n    }\n};\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"anagram\", t = \"nagaram\"\n\u8f93\u51fa: true\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"rat\", t = \"car\"\n\u8f93\u51fa: false\n<\/code><\/pre>\n<h3 id=\"\u4e22\u5931\u7684\u6570\u5b57-2\">\u4e22\u5931\u7684\u6570\u5b57<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-38\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u5305\u542b <code>[0, n]<\/code> \u4e2d <code>n<\/code> \u4e2a\u6570\u7684\u6570\u7ec4 <code>nums<\/code> \uff0c\u627e\u51fa <code>[0, n]<\/code> \u8fd9\u4e2a\u8303\u56f4\u5185\u6ca1\u6709\u51fa\u73b0\u5728\u6570\u7ec4\u4e2d\u7684\u90a3\u4e2a\u6570\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-14\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u5c06\u6570\u7ec4\u6392\u5e8f\u4e4b\u540e\uff0c\u5373\u53ef\u6839\u636e\u6570\u7ec4\u4e2d\u6bcf\u4e2a\u4e0b\u6807\u5904\u7684\u5143\u7d20\u662f\u5426\u548c\u4e0b\u6807\u76f8\u7b49\uff0c\u5f97\u5230\u4e22\u5931\u7684\u6570\u5b57<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-38\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-c++\" lang=\"c++\">class Solution {\npublic:\n    int missingNumber(vector&lt;int&gt;&amp; nums) {\n        int numcount = nums.size();\n        int tag = 0;\n        sort(nums.begin(),nums.end());\n        for (auto&amp; i : nums)\n        {\n            if (i == tag)\n                tag++;\n            else\n                return tag;\n        }\n        \n        return tag;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [3,0,1]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1an = 3\uff0c\u56e0\u4e3a\u6709 3 \u4e2a\u6570\u5b57\uff0c\u6240\u4ee5\u6240\u6709\u7684\u6570\u5b57\u90fd\u5728\u8303\u56f4 [0,3] \u5185\u30022 \u662f\u4e22\u5931\u7684\u6570\u5b57\uff0c\u56e0\u4e3a\u5b83\u6ca1\u6709\u51fa\u73b0\u5728 nums \u4e2d\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [0,1]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1an = 2\uff0c\u56e0\u4e3a\u6709 2 \u4e2a\u6570\u5b57\uff0c\u6240\u4ee5\u6240\u6709\u7684\u6570\u5b57\u90fd\u5728\u8303\u56f4 [0,2] \u5185\u30022 \u662f\u4e22\u5931\u7684\u6570\u5b57\uff0c\u56e0\u4e3a\u5b83\u6ca1\u6709\u51fa\u73b0\u5728 nums \u4e2d\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [9,6,4,2,3,5,7,0,1]\n\u8f93\u51fa\uff1a8\n\u89e3\u91ca\uff1an = 9\uff0c\u56e0\u4e3a\u6709 9 \u4e2a\u6570\u5b57\uff0c\u6240\u4ee5\u6240\u6709\u7684\u6570\u5b57\u90fd\u5728\u8303\u56f4 [0,9] \u5185\u30028 \u662f\u4e22\u5931\u7684\u6570\u5b57\uff0c\u56e0\u4e3a\u5b83\u6ca1\u6709\u51fa\u73b0\u5728 nums \u4e2d\u3002\n<\/code><\/pre>\n<h3 id=\"\u591a\u6570\u5143\u7d20-2\">\u591a\u6570\u5143\u7d20<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-39\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u5927\u5c0f\u4e3a <code>n<\/code> \u7684\u6570\u7ec4 <code>nums<\/code> \uff0c\u8fd4\u56de\u5176\u4e2d\u7684\u591a\u6570\u5143\u7d20\u3002\u591a\u6570\u5143\u7d20\u662f\u6307\u5728\u6570\u7ec4\u4e2d\u51fa\u73b0\u6b21\u6570 <strong>\u5927\u4e8e<\/strong> <code>\u230a n\/2 \u230b<\/code> \u7684\u5143\u7d20\u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u5047\u8bbe\u6570\u7ec4\u662f\u975e\u7a7a\u7684\uff0c\u5e76\u4e14\u7ed9\u5b9a\u7684\u6570\u7ec4\u603b\u662f\u5b58\u5728\u591a\u6570\u5143\u7d20\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-15\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u5982\u679c\u5c06\u6570\u7ec4 <code>nums<\/code> \u4e2d\u7684\u6240\u6709\u5143\u7d20\u6309\u7167\u5355\u8c03\u9012\u589e\u6216\u5355\u8c03\u9012\u51cf\u7684\u987a\u5e8f\u6392\u5e8f\uff0c\u90a3\u4e48\u4e0b\u6807\u4e3a <code>\u230a n\/2 \u230b<\/code> \u7684\u5143\u7d20\uff08\u4e0b\u6807\u4ece 0 \u5f00\u59cb\uff09\u4e00\u5b9a\u662f\u4f17\u6570\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-39\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    int majorityElement(vector&lt;int&gt;&amp; nums) {\n        sort(nums.begin(), nums.end());\n        return nums[nums.size() \/ 2];\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1anums = [3,2,3]\n\u8f93\u51fa\uff1a3\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1anums = [2,2,1,1,1,2,2]\n\u8f93\u51fa\uff1a2\n<\/code><\/pre>\n<h3 id=\"h\u6307\u6570\">H\u6307\u6570<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-40\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>citations<\/code> \uff0c\u5176\u4e2d <code>citations[i]<\/code> \u8868\u793a\u7814\u7a76\u8005\u7684\u7b2c <code>i<\/code> \u7bc7\u8bba\u6587\u88ab\u5f15\u7528\u7684\u6b21\u6570\u3002\u8ba1\u7b97\u5e76\u8fd4\u56de\u8be5\u7814\u7a76\u8005\u7684 <strong><code>h<\/code> \u6307\u6570<\/strong>\u3002<\/p>\n<p>\u6839\u636e\u7ef4\u57fa\u767e\u79d1\u4e0a h \u6307\u6570\u7684\u5b9a\u4e49\uff1a<code>h<\/code> \u4ee3\u8868\u201c\u9ad8\u5f15\u7528\u6b21\u6570\u201d \uff0c\u4e00\u540d\u79d1\u7814\u4eba\u5458\u7684 <code>h<\/code> <strong>\u6307\u6570<\/strong> \u662f\u6307\u4ed6\uff08\u5979\uff09\u81f3\u5c11\u53d1\u8868\u4e86 <code>h<\/code> \u7bc7\u8bba\u6587\uff0c\u5e76\u4e14 <strong>\u81f3\u5c11<\/strong> \u6709 <code>h<\/code> \u7bc7\u8bba\u6587\u88ab\u5f15\u7528\u6b21\u6570\u5927\u4e8e\u7b49\u4e8e <code>h<\/code> \u3002\u5982\u679c <code>h<\/code> \u6709\u591a\u79cd\u53ef\u80fd\u7684\u503c\uff0c<strong><code>h<\/code> \u6307\u6570<\/strong> \u662f\u5176\u4e2d\u6700\u5927\u7684\u90a3\u4e2a\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-25\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6211\u4eec\u53ef\u4ee5\u77e5\u9053h\u4e00\u5b9a\u662f\u5c0f\u4e8e\u7b49\u4e8e\u8bba\u6587\u6570\u91cf\u7684,\u6240\u4ee5\u6211\u4eec\u53ef\u5728\u8bba\u6587\u6570\u91cf\u4e2d\u8fdb\u884c\u4e8c\u5206\u67e5\u627e,\u6700\u7ec8\u627e\u5230\u6b63\u786e\u7684h\u503c<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-40\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    int hIndex(vector&lt;int&gt;&amp; citations) {\n        int left=0,right=citations.size() ;\n        int mid=0,cnt=0;\n        while(left&lt;right){\n            \/\/ +1 \u9632\u6b62\u6b7b\u5faa\u73af\n            mid=(left+right+1)&gt;&gt;1;\n            cnt=0;\n            for(int i=0;i&lt;citations.size();i++){\n                if(citations[i]&gt;=mid){\n                    cnt++;\n                }\n            }\n            if(cnt&gt;=mid){\n                \/\/ \u8981\u627e\u7684\u7b54\u6848\u5728 [mid,right] \u533a\u95f4\u5185\n                left=mid;\n            }else{\n                \/\/ \u8981\u627e\u7684\u7b54\u6848\u5728 [0,mid) \u533a\u95f4\u5185\n                right=mid-1;\n            }\n        }\n        return left;\n    }\n};\n\n\n<\/code><\/pre>\n<h4 id=\"\u9898\u76ee\u5206\u6790-26\">\u9898\u76ee\u5206\u6790<\/h4>\n<ol start=\"\">\n<li><strong>\u521d\u59cb\u5316<\/strong>\uff1a\n<ul>\n<li><code>n<\/code>\uff1a\u6570\u7ec4<code>citations<\/code>\u7684\u5927\u5c0f\u3002<\/li>\n<li><code>tot<\/code>\uff1a\u7528\u4e8e\u8ba1\u7b97\u5f53\u524d\u5f15\u7528\u6b21\u6570\u81f3\u5c11\u4e3a<code>i<\/code>\u7684\u8bba\u6587\u6570\u91cf\u3002<\/li>\n<li><code>counter<\/code>\uff1a\u4e00\u4e2a\u5927\u5c0f\u4e3a<code>n+1<\/code>\u7684\u6570\u7ec4\uff0c\u7528\u4e8e\u7edf\u8ba1\u6bcf\u4e2a\u5f15\u7528\u6b21\u6570\u5bf9\u5e94\u7684\u8bba\u6587\u6570\u91cf\u3002\u7531\u4e8e\u5f15\u7528\u6b21\u6570\u53ef\u80fd\u662f\u4ece0\u5230<code>n<\/code>\u7684\u4efb\u610f\u6574\u6570\uff0c\u6240\u4ee5\u6570\u7ec4\u5927\u5c0f\u4e3a<code>n+1<\/code>\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u7edf\u8ba1\u5f15\u7528\u6b21\u6570<\/strong>\uff1a\n<ul>\n<li>\u904d\u5386<code>citations<\/code>\u6570\u7ec4\uff0c\u5bf9\u4e8e\u6bcf\u4e2a\u5f15\u7528\u6b21\u6570<code>citations[i]<\/code>\uff1a\n<ul>\n<li>\u5982\u679c<code>citations[i]<\/code>\u5927\u4e8e\u7b49\u4e8e<code>n<\/code>\uff0c\u90a3\u4e48\u5c06\u5176\u7edf\u8ba1\u5230<code>counter[n]<\/code>\u4e2d\uff08\u56e0\u4e3aH-Index\u4e0d\u53ef\u80fd\u5927\u4e8e\u6570\u7ec4\u957f\u5ea6<code>n<\/code>\uff09\u3002<\/li>\n<li>\u5426\u5219\uff0c\u5c06\u5176\u7edf\u8ba1\u5230<code>counter[citations[i]]<\/code>\u4e2d\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u5bfb\u627eH-Index<\/strong>\uff1a\n<ul>\n<li>\u4ece<code>n<\/code>\u5f00\u59cb\uff0c\u5411\u524d\u904d\u5386<code>counter<\/code>\u6570\u7ec4\u3002<\/li>\n<li>\u5bf9\u4e8e\u6bcf\u4e2a<code>i<\/code>\uff08\u4ece<code>n<\/code>\u5230<code>0<\/code>\uff09\uff0c\u5c06<code>counter[i]<\/code>\u7d2f\u52a0\u5230<code>tot<\/code>\u4e2d\u3002<\/li>\n<li>\u5982\u679c<code>tot<\/code>\uff08\u5373\u5f53\u524d\u5f15\u7528\u6b21\u6570\u81f3\u5c11\u4e3a<code>i<\/code>\u7684\u8bba\u6587\u6570\u91cf\uff09\u5927\u4e8e\u6216\u7b49\u4e8e<code>i<\/code>\uff0c\u90a3\u4e48<code>i<\/code>\u5c31\u662f\u6211\u4eec\u8981\u627e\u7684H-Index\uff0c\u76f4\u63a5\u8fd4\u56de\u3002<\/li>\n<li>\u5982\u679c\u904d\u5386\u5b8c\u6574\u4e2a<code>counter<\/code>\u6570\u7ec4\u90fd\u6ca1\u6709\u627e\u5230\u6ee1\u8db3\u6761\u4ef6\u7684<code>i<\/code>\uff0c\u5219\u8fd4\u56de<code>0<\/code>\uff08\u8fd9\u901a\u5e38\u4e0d\u4f1a\u53d1\u751f\uff0c\u9664\u975e<code>citations<\/code>\u6570\u7ec4\u4e3a\u7a7a\uff0c\u4f46\u6309\u7167\u9898\u76ee\u8981\u6c42\uff0c\u8fd9\u79cd\u60c5\u51b5\u5e94\u8be5\u8fd4\u56de<code>0<\/code>\u4f5c\u4e3aH-Index\uff09\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-41\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    int hIndex(vector&lt;int&gt;&amp; citations) {\n        int n = citations.size(), tot = 0;\n        vector&lt;int&gt; counter(n + 1);\n        for (int i = 0; i &lt; n; i++) {\n            if (citations[i] &gt;= n) {\n                counter[n]++;\n            }\n            else {\n                counter[citations[i]]++;\n            }\n        }\n        for (int i = n; i &gt;= 0; i--) {\n            tot += counter[i];\n            if (tot &gt;= i) {\n                return i;\n            }\n        }\n        return 0;\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1acitations = [3,0,6,1,5]\n\u8f93\u51fa\uff1a3 \n\u89e3\u91ca\uff1a\u7ed9\u5b9a\u6570\u7ec4\u8868\u793a\u7814\u7a76\u8005\u603b\u5171\u6709 5 \u7bc7\u8bba\u6587\uff0c\u6bcf\u7bc7\u8bba\u6587\u76f8\u5e94\u7684\u88ab\u5f15\u7528\u4e86 3, 0, 6, 1, 5 \u6b21\u3002\n     \u7531\u4e8e\u7814\u7a76\u8005\u6709 3 \u7bc7\u8bba\u6587\u6bcf\u7bc7 \u81f3\u5c11 \u88ab\u5f15\u7528\u4e86 3 \u6b21\uff0c\u5176\u4f59\u4e24\u7bc7\u8bba\u6587\u6bcf\u7bc7\u88ab\u5f15\u7528 \u4e0d\u591a\u4e8e 3 \u6b21\uff0c\u6240\u4ee5\u5979\u7684 h \u6307\u6570\u662f 3\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1acitations = [1,3,1]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<h3 id=\"\u5b57\u6bcd\u5f02\u4f4d\u8bcd\u5206\u7ec4-2\">\u5b57\u6bcd\u5f02\u4f4d\u8bcd\u5206\u7ec4<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-41\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32\u6570\u7ec4\uff0c\u8bf7\u4f60\u5c06 <strong>\u5b57\u6bcd\u5f02\u4f4d\u8bcd<\/strong> \u7ec4\u5408\u5728\u4e00\u8d77\u3002\u53ef\u4ee5\u6309\u4efb\u610f\u987a\u5e8f\u8fd4\u56de\u7ed3\u679c\u5217\u8868\u3002<\/p>\n<p><strong>\u5b57\u6bcd\u5f02\u4f4d\u8bcd<\/strong> \u662f\u7531\u91cd\u65b0\u6392\u5217\u6e90\u5355\u8bcd\u7684\u6240\u6709\u5b57\u6bcd\u5f97\u5230\u7684\u4e00\u4e2a\u65b0\u5355\u8bcd\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-27\">\u9898\u76ee\u5206\u6790<\/h4>\n<ol start=\"\">\n<li><strong>\u521d\u59cb\u72b6\u6001<\/strong>\uff1a \u5047\u8bbe<code>mp<\/code>\u662f\u4e00\u4e2a\u7a7a\u7684<code>unordered_map<\/code>\uff0c<code>key<\/code>\u662f\u67d0\u4e2a\u5b57\u7b26\u4e32\u7684\u6392\u5e8f\u7248\u672c\uff0c<code>str<\/code>\u662f\u539f\u59cb\u7684\u5b57\u7b26\u4e32\u3002<\/li>\n<li><strong>\u7b2c\u4e00\u6b21\u8c03\u7528<\/strong>\uff1a \u5f53<code>str<\/code>\u662f\u8f93\u5165\u5217\u8868\u4e2d\u7684\u7b2c\u4e00\u4e2a\u5b57\u7b26\u4e32\uff08\u4f8b\u5982&#8221;eat&#8221;\uff09\u65f6\uff0c<code>key<\/code>\u4f1a\u88ab\u6392\u5e8f\u4e3a&#8221;ate&#8221;\u3002\u5982\u679c<code>mp<\/code>\u4e2d\u8fd8\u6ca1\u6709\u952e&#8221;ate&#8221;\uff0c\u90a3\u4e48<code>mp<\/code>\u4f1a\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u952e&#8221;ate&#8221;\uff0c\u5e76\u5173\u8054\u4e00\u4e2a\u7a7a\u7684<code>vector&lt;string&gt;<\/code>\u3002\n<ul>\n<li><code>mp[\"ate\"]<\/code> = <code>[]<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>\u6267\u884c<code>emplace_back<\/code><\/strong>\uff1a <code>str<\/code>\uff08\u201ceat\u201d\uff09\u4f1a\u88ab\u63d2\u5165\u5230<code>mp[\"ate\"]<\/code>\u7684\u672b\u5c3e\u3002\n<ul>\n<li><code>mp[\"ate\"]<\/code> = <code>[\"eat\"]<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>\u540e\u7eed\u8c03\u7528<\/strong>\uff1a \u5bf9\u4e8e\u8f93\u5165\u5217\u8868\u4e2d\u7684\u4e0b\u4e00\u4e2a\u5b57\u7b26\u4e32&#8221;tea&#8221;\uff0c\u5176\u6392\u5e8f\u540e\u7684<code>key<\/code>\u4e5f\u662f&#8221;ate&#8221;\u3002\u7531\u4e8e<code>mp<\/code>\u4e2d\u5df2\u7ecf\u6709\u4e86\u952e&#8221;ate&#8221;\uff0c\u6240\u4ee5&#8221;tea&#8221;\u4f1a\u88ab\u6dfb\u52a0\u5230\u4e0e&#8221;ate&#8221;\u5173\u8054\u7684<code>vector&lt;string&gt;<\/code>\u4e2d\u3002\n<ul>\n<li><code>mp[\"ate\"]<\/code> = <code>[\"eat\", \"tea\"]<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>\u91cd\u590d\u8fc7\u7a0b<\/strong>\uff1a \u5bf9\u4e8e\u6240\u6709\u5176\u4ed6\u4e0e&#8221;ate&#8221;\u6392\u5e8f\u540e\u76f8\u540c\u7684\u5b57\u7b26\u4e32\uff08\u4f8b\u5982&#8221;ate&#8221;\uff09\uff0c\u5b83\u4eec\u4e5f\u4f1a\u88ab\u6dfb\u52a0\u5230<code>mp[\"ate\"]<\/code>\u4e2d\u3002\n<ul>\n<li><code>mp[\"ate\"]<\/code> = <code>[\"eat\", \"tea\", \"ate\"]<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-42\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;string&gt;\n#include &lt;unordered_map&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;vector&lt;string&gt;&gt; groupAnagrams(vector&lt;string&gt;&amp; strs) {\n        unordered_map&lt;string, vector&lt;string&gt;&gt; mp;\n        for (string&amp; str : strs) {\n            string key = str;\n            sort(key.begin(), key.end());\n            mp[key].emplace_back(str);\n        }\n        vector&lt;vector&lt;string&gt;&gt; ans;\n        for (auto it = mp.begin(); it != mp.end(); ++it) {\n            ans.emplace_back(it-&gt;second);\n        }\n        return ans;\n    }\n};\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: strs = [\"eat\", \"tea\", \"tan\", \"ate\", \"nat\", \"bat\"]\n\u8f93\u51fa: [[\"bat\"],[\"nat\",\"tan\"],[\"ate\",\"eat\",\"tea\"]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: strs = [\"\"]\n\u8f93\u51fa: [[\"\"]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3:<\/strong><\/p>\n<pre><code>\u8f93\u5165: strs = [\"a\"]\n\u8f93\u51fa: [[\"a\"]]\n<\/code><\/pre>\n<h3 id=\"\u5408\u5e76\u533a\u95f4\">\u5408\u5e76\u533a\u95f4<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-42\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u4ee5\u6570\u7ec4 <code>intervals<\/code> \u8868\u793a\u82e5\u5e72\u4e2a\u533a\u95f4\u7684\u96c6\u5408\uff0c\u5176\u4e2d\u5355\u4e2a\u533a\u95f4\u4e3a <code>intervals[i] = [starti, endi]<\/code> \u3002\u8bf7\u4f60\u5408\u5e76\u6240\u6709\u91cd\u53e0\u7684\u533a\u95f4\uff0c\u5e76\u8fd4\u56de <em>\u4e00\u4e2a\u4e0d\u91cd\u53e0\u7684\u533a\u95f4\u6570\u7ec4\uff0c\u8be5\u6570\u7ec4\u9700\u6070\u597d\u8986\u76d6\u8f93\u5165\u4e2d\u7684\u6240\u6709\u533a\u95f4<\/em> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-28\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u9996\u5148\uff0c\u6211\u4eec\u5c06\u5217\u8868\u4e2d\u7684\u533a\u95f4\u6309\u7167\u5de6\u7aef\u70b9\u5347\u5e8f\u6392\u5e8f\u3002\u7136\u540e\u6211\u4eec\u5c06\u7b2c\u4e00\u4e2a\u533a\u95f4\u52a0\u5165 merged \u6570\u7ec4\u4e2d\uff0c\u5e76\u6309\u987a\u5e8f\u4f9d\u6b21\u8003\u8651\u4e4b\u540e\u7684\u6bcf\u4e2a\u533a\u95f4\uff1a<\/p>\n<p>\u5982\u679c\u5f53\u524d\u533a\u95f4\u7684\u5de6\u7aef\u70b9\u5728\u6570\u7ec4 merged \u4e2d\u6700\u540e\u4e00\u4e2a\u533a\u95f4\u7684\u53f3\u7aef\u70b9\u4e4b\u540e\uff0c\u90a3\u4e48\u5b83\u4eec\u4e0d\u4f1a\u91cd\u5408\uff0c\u6211\u4eec\u53ef\u4ee5\u76f4\u63a5\u5c06\u8fd9\u4e2a\u533a\u95f4\u52a0\u5165\u6570\u7ec4 merged \u7684\u672b\u5c3e\uff1b<\/p>\n<p>\u5426\u5219\uff0c\u5b83\u4eec\u91cd\u5408\uff0c\u6211\u4eec\u9700\u8981\u7528\u5f53\u524d\u533a\u95f4\u7684\u53f3\u7aef\u70b9\u66f4\u65b0\u6570\u7ec4 merged \u4e2d\u6700\u540e\u4e00\u4e2a\u533a\u95f4\u7684\u53f3\u7aef\u70b9\uff0c\u5c06\u5176\u7f6e\u4e3a\u4e8c\u8005\u7684\u8f83\u5927\u503c\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-43\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; merge(vector&lt;vector&lt;int&gt;&gt;&amp; intervals) {\n        if (intervals.size() == 0) {\n            return {};\n        }\n        sort(intervals.begin(), intervals.end());\n        vector&lt;vector&lt;int&gt;&gt; merged;\n        for (int i = 0; i &lt; intervals.size(); ++i) {\n            int L = intervals[i][0], R = intervals[i][1];\n            if (!merged.size() || merged.back()[1] &lt; L) {\n                merged.push_back({ L, R });\n            }\n            else {\n                merged.back()[1] = max(merged.back()[1], R);\n            }\n        }\n        return merged;\n    }\n};\n\n\n\/\/\u7075\u795e\u7684\u65b9\u6cd5\nclass Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; merge(vector&lt;vector&lt;int&gt;&gt;&amp; intervals) {\n        ranges::sort(intervals); \/\/ \u6309\u7167\u5de6\u7aef\u70b9\u4ece\u5c0f\u5230\u5927\u6392\u5e8f\n        vector&lt;vector&lt;int&gt;&gt; ans;\n        for (auto&amp; p : intervals) {\n            if (!ans.empty() &amp;&amp; p[0] &lt;= ans.back()[1]) { \/\/ \u53ef\u4ee5\u5408\u5e76\n                ans.back()[1] = max(ans.back()[1], p[1]); \/\/ \u66f4\u65b0\u53f3\u7aef\u70b9\u6700\u5927\u503c\n            } else { \/\/ \u4e0d\u76f8\u4ea4\uff0c\u65e0\u6cd5\u5408\u5e76\n                ans.emplace_back(p); \/\/ \u65b0\u7684\u5408\u5e76\u533a\u95f4\n            }\n        }\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aintervals = [[1,3],[2,6],[8,10],[15,18]]\n\u8f93\u51fa\uff1a[[1,6],[8,10],[15,18]]\n\u89e3\u91ca\uff1a\u533a\u95f4 [1,3] \u548c [2,6] \u91cd\u53e0, \u5c06\u5b83\u4eec\u5408\u5e76\u4e3a [1,6].\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aintervals = [[1,4],[4,5]]\n\u8f93\u51fa\uff1a[[1,5]]\n\u89e3\u91ca\uff1a\u533a\u95f4 [1,4] \u548c [4,5] \u53ef\u88ab\u89c6\u4e3a\u91cd\u53e0\u533a\u95f4\u3002\n<\/code><\/pre>\n<h3 id=\"\u8ba9\u6240\u6709\u5b66\u751f\u4fdd\u6301\u5f00\u5fc3\u7684\u5206\u7ec4\u65b9\u6cd5\u6570\">\u8ba9\u6240\u6709\u5b66\u751f\u4fdd\u6301\u5f00\u5fc3\u7684\u5206\u7ec4\u65b9\u6cd5\u6570<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-43\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u4e0b\u6807\u4ece <strong>0<\/strong> \u5f00\u59cb\u3001\u957f\u5ea6\u4e3a <code>n<\/code> \u7684\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \uff0c\u5176\u4e2d <code>n<\/code> \u662f\u73ed\u7ea7\u4e2d\u5b66\u751f\u7684\u603b\u6570\u3002\u73ed\u4e3b\u4efb\u5e0c\u671b\u80fd\u591f\u5728\u8ba9\u6240\u6709\u5b66\u751f\u4fdd\u6301\u5f00\u5fc3\u7684\u60c5\u51b5\u4e0b\u9009\u51fa\u4e00\u7ec4\u5b66\u751f\uff1a<\/p>\n<p>\u5982\u679c\u80fd\u591f\u6ee1\u8db3\u4e0b\u8ff0\u4e24\u4e2a\u6761\u4ef6\u4e4b\u4e00\uff0c\u5219\u8ba4\u4e3a\u7b2c <code>i<\/code> \u4f4d\u5b66\u751f\u5c06\u4f1a\u4fdd\u6301\u5f00\u5fc3\uff1a<\/p>\n<ul>\n<li>\u8fd9\u4f4d\u5b66\u751f\u88ab\u9009\u4e2d\uff0c\u5e76\u4e14\u88ab\u9009\u4e2d\u7684\u5b66\u751f\u4eba\u6570 <strong>\u4e25\u683c\u5927\u4e8e<\/strong> <code>nums[i]<\/code> \u3002<\/li>\n<li>\u8fd9\u4f4d\u5b66\u751f\u6ca1\u6709\u88ab\u9009\u4e2d\uff0c\u5e76\u4e14\u88ab\u9009\u4e2d\u7684\u5b66\u751f\u4eba\u6570 <strong>\u4e25\u683c\u5c0f\u4e8e<\/strong> <code>nums[i]<\/code> \u3002<\/li>\n<\/ul>\n<p>\u8fd4\u56de\u80fd\u591f\u6ee1\u8db3\u8ba9\u6240\u6709\u5b66\u751f\u4fdd\u6301\u5f00\u5fc3\u7684\u5206\u7ec4\u65b9\u6cd5\u7684\u6570\u76ee\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-29\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><a href=\"https:\/\/leetcode.cn\/problems\/happy-students\/solutions\/2446022\/pai-xu-pythonjavacgojs-by-endlesscheng-ptzl\/?envType=daily-question&amp;envId=2024-09-04\">2860. \u8ba9\u6240\u6709\u5b66\u751f\u4fdd\u6301\u5f00\u5fc3\u7684\u5206\u7ec4\u65b9\u6cd5\u6570 &#8211; \u529b\u6263\uff08LeetCode\uff09<\/a><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-44\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    int countWays(vector&lt;int&gt;&amp; nums) {\n\n        ranges::sort(nums);\n\n        int ans = nums[0] &gt; 0;\n        for (int i = 1; i &lt; nums.size(); i++)\n        {\n            ans += nums[i - 1] &lt; i &amp;&amp; i &lt; nums[i];\n        }\n\n        return ans + 1;\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,1]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1a\n\u6709\u4e24\u79cd\u53ef\u884c\u7684\u65b9\u6cd5\uff1a\n\u73ed\u4e3b\u4efb\u6ca1\u6709\u9009\u4e2d\u5b66\u751f\u3002\n\u73ed\u4e3b\u4efb\u9009\u4e2d\u6240\u6709\u5b66\u751f\u5f62\u6210\u4e00\u7ec4\u3002 \n\u5982\u679c\u73ed\u4e3b\u4efb\u4ec5\u9009\u4e2d\u4e00\u4e2a\u5b66\u751f\u6765\u5b8c\u6210\u5206\u7ec4\uff0c\u90a3\u4e48\u4e24\u4e2a\u5b66\u751f\u90fd\u65e0\u6cd5\u4fdd\u6301\u5f00\u5fc3\u3002\u56e0\u6b64\uff0c\u4ec5\u5b58\u5728\u4e24\u79cd\u53ef\u884c\u7684\u65b9\u6cd5\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [6,0,3,3,6,7,2,7]\n\u8f93\u51fa\uff1a3\n\u89e3\u91ca\uff1a\n\u5b58\u5728\u4e09\u79cd\u53ef\u884c\u7684\u65b9\u6cd5\uff1a\n\u73ed\u4e3b\u4efb\u9009\u4e2d\u4e0b\u6807\u4e3a 1 \u7684\u5b66\u751f\u5f62\u6210\u4e00\u7ec4\u3002\n\u73ed\u4e3b\u4efb\u9009\u4e2d\u4e0b\u6807\u4e3a 1\u30012\u30013\u30016 \u7684\u5b66\u751f\u5f62\u6210\u4e00\u7ec4\u3002\n\u73ed\u4e3b\u4efb\u9009\u4e2d\u6240\u6709\u5b66\u751f\u5f62\u6210\u4e00\u7ec4\u3002 \n<\/code><\/pre>\n<h2 id=\"\u4f4d\u8fd0\u7b97\">\u4f4d\u8fd0\u7b97<\/h2>\n<h3 id=\"\u4e22\u5931\u7684\u6570\u5b57-3\">\u4e22\u5931\u7684\u6570\u5b57<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-44\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u5305\u542b <code>[0, n]<\/code> \u4e2d <code>n<\/code> \u4e2a\u6570\u7684\u6570\u7ec4 <code>nums<\/code> \uff0c\u627e\u51fa <code>[0, n]<\/code> \u8fd9\u4e2a\u8303\u56f4\u5185\u6ca1\u6709\u51fa\u73b0\u5728\u6570\u7ec4\u4e2d\u7684\u90a3\u4e2a\u6570\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-16\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u6570\u7ec4 <code>nums<\/code> \u4e2d\u6709 <code>n<\/code> \u4e2a\u6570\uff0c\u5728\u8fd9 <code>n<\/code> \u4e2a\u6570\u7684\u540e\u9762\u6dfb\u52a0\u4ece <code>0<\/code> \u5230 <code>n<\/code> \u7684\u6bcf\u4e2a\u6574\u6570\uff0c\u5219\u6dfb\u52a0\u4e86 <code>n+1<\/code> \u4e2a\u6574\u6570\uff0c\u5171\u6709 <code>2n+1<\/code>\u4e2a\u6574\u6570\u3002<\/p>\n<p>\u5728 <code>2n+1<\/code> \u4e2a\u6574\u6570\u4e2d\uff0c\u4e22\u5931\u7684\u6570\u5b57\u53ea\u5728\u540e\u9762 <code>n+1<\/code> \u4e2a\u6574\u6570\u4e2d\u51fa\u73b0\u4e00\u6b21\uff0c\u5176\u4f59\u7684\u6570\u5b57\u5728\u524d\u9762 <code>n<\/code> \u4e2a\u6574\u6570\u4e2d\uff08\u5373\u6570\u7ec4\u4e2d\uff09\u548c\u540e\u9762 <code>n+1<\/code> \u4e2a\u6574\u6570\u4e2d\u5404\u51fa\u73b0\u4e00\u6b21\uff0c\u5373\u5176\u4f59\u7684\u6570\u5b57\u90fd\u51fa\u73b0\u4e86\u4e24\u6b21\u3002<\/p>\n<p>\u6839\u636e\u51fa\u73b0\u7684\u6b21\u6570\u7684\u5947\u5076\u6027\uff0c\u53ef\u4ee5\u4f7f\u7528\u6309\u4f4d\u5f02\u6216\u8fd0\u7b97\u5f97\u5230\u4e22\u5931\u7684\u6570\u5b57\u3002\u6309\u4f4d\u5f02\u6216\u8fd0\u7b97 <code>\u2295<\/code> \u6ee1\u8db3\u4ea4\u6362\u5f8b\u548c\u7ed3\u5408\u5f8b\uff0c\u4e14\u5bf9\u4efb\u610f\u6574\u6570 <code>x<\/code> \u90fd\u6ee1\u8db3 <code>x\u2295x=0<\/code>\u548c <code>x\u22950=x<\/code>\u3002<\/p>\n<p>\u7531\u4e8e\u4e0a\u8ff0 <code>2n+1<\/code> \u4e2a\u6574\u6570\u4e2d\uff0c\u4e22\u5931\u7684\u6570\u5b57\u51fa\u73b0\u4e86\u4e00\u6b21\uff0c\u5176\u4f59\u7684\u6570\u5b57\u90fd\u51fa\u73b0\u4e86\u4e24\u6b21\uff0c\u56e0\u6b64\u5bf9\u4e0a\u8ff0 <code>2n+1<\/code> \u4e2a\u6574\u6570\u8fdb\u884c\u6309\u4f4d\u5f02\u6216\u8fd0\u7b97\uff0c\u7ed3\u679c\u5373\u4e3a\u4e22\u5931\u7684\u6570\u5b57\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-45\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-c++\" lang=\"c++\">class Solution {\npublic:\n    int missingNumber(vector&lt;int&gt;&amp; nums) {\n        int res = 0;\n        int n = nums.size();\n        for (int i = 0; i &lt; n; i++) {\n            res ^= nums[i];\n        }\n        for (int i = 0; i &lt;= n; i++) {\n            res ^= i;\n        }\n        return res;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [3,0,1]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1an = 3\uff0c\u56e0\u4e3a\u6709 3 \u4e2a\u6570\u5b57\uff0c\u6240\u4ee5\u6240\u6709\u7684\u6570\u5b57\u90fd\u5728\u8303\u56f4 [0,3] \u5185\u30022 \u662f\u4e22\u5931\u7684\u6570\u5b57\uff0c\u56e0\u4e3a\u5b83\u6ca1\u6709\u51fa\u73b0\u5728 nums \u4e2d\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [0,1]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1an = 2\uff0c\u56e0\u4e3a\u6709 2 \u4e2a\u6570\u5b57\uff0c\u6240\u4ee5\u6240\u6709\u7684\u6570\u5b57\u90fd\u5728\u8303\u56f4 [0,2] \u5185\u30022 \u662f\u4e22\u5931\u7684\u6570\u5b57\uff0c\u56e0\u4e3a\u5b83\u6ca1\u6709\u51fa\u73b0\u5728 nums \u4e2d\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [9,6,4,2,3,5,7,0,1]\n\u8f93\u51fa\uff1a8\n\u89e3\u91ca\uff1an = 9\uff0c\u56e0\u4e3a\u6709 9 \u4e2a\u6570\u5b57\uff0c\u6240\u4ee5\u6240\u6709\u7684\u6570\u5b57\u90fd\u5728\u8303\u56f4 [0,9] \u5185\u30028 \u662f\u4e22\u5931\u7684\u6570\u5b57\uff0c\u56e0\u4e3a\u5b83\u6ca1\u6709\u51fa\u73b0\u5728 nums \u4e2d\u3002\n<\/code><\/pre>\n<h3 id=\"\u8bbe\u8ba1\u673a\u68b0\u7d2f\u52a0\u5668\">\u8bbe\u8ba1\u673a\u68b0\u7d2f\u52a0\u5668<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-45\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u8bf7\u8bbe\u8ba1\u4e00\u4e2a\u673a\u68b0\u7d2f\u52a0\u5668\uff0c\u8ba1\u7b97\u4ece 1\u30012&#8230; \u4e00\u76f4\u7d2f\u52a0\u5230\u76ee\u6807\u6570\u503c <code>target<\/code> \u7684\u603b\u548c\u3002\u6ce8\u610f\u8fd9\u662f\u4e00\u4e2a\u53ea\u80fd\u8fdb\u884c\u52a0\u6cd5\u64cd\u4f5c\u7684\u7a0b\u5e8f\uff0c\u4e0d\u5177\u5907\u4e58\u9664\u3001if-else\u3001switch-case\u3001for \u5faa\u73af\u3001while \u5faa\u73af\uff0c\u53ca\u6761\u4ef6\u5224\u65ad\u8bed\u53e5\u7b49\u9ad8\u7ea7\u529f\u80fd\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-30\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5bf9\u4e8e<code>A&amp;&amp;B<\/code>\u6765\u8bf4\uff0c\u53ea\u8981A\u4e3afalse\u5219B\u4e0d\u4f1a\u6267\u884c<\/p>\n<p>\u5bf9\u4e8e<code>A||B<\/code>\u6765\u8bf4 \uff0c\u53ea\u8981A\u4e3atrue\u5219B\u4e0d\u4f1a\u6267\u884c<\/p>\n<p>\u6211\u4eec\u53ef\u4ee5\u5de7\u5999\u7684\u8fd0\u7528\u8fd9\u4e00\u70b9<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-46\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\/\/\u4e0d\u63a8\u8350\u8fd9\u4e2a\u65b9\u6cd5\uff0c\u4f46\u662f\u53ef\u4ee5\u719f\u6089static\u548c\u6784\u9020\u51fd\u6570\nclass Temp {\npublic:\n    \/\/ \u6784\u9020\u51fd\u6570\n    Temp() {\n        N++;\n        sum += N;\n    }\n    \/\/ \u8fd4\u56de\u503c\uff08\u9759\u6001\u51fd\u6570\uff09\n    static unsigned int getSum() {\n        return sum;\n    }\n    \/\/ \u91cd\u7f6e\u9759\u6001\u53d8\u91cf\n    static void reset() {\n        N = 0;\n        sum = 0;\n    }\nprivate:\n    \/\/ \u9759\u6001\u53d8\u91cf\u7684\u58f0\u660e\u5f0f\n    static unsigned int N;\n    static unsigned int sum;\n};\n\/\/ \u5b9a\u4e49\u5f0f\nunsigned int Temp::N = 0;\nunsigned int Temp::sum = 0;\n\nclass Solution {\npublic:\n    int sumNums(int n) {\n        Temp::reset();\n        Temp* p = new Temp[n];\n        delete[] p;\n        p = nullptr;\n        return Temp::getSum();\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165: target = 5\n\u8f93\u51fa: 15\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165: target = 7\n\u8f93\u51fa: 28\n<\/code><\/pre>\n<h2 id=\"\u8d2a\u5fc3\">\u8d2a\u5fc3<\/h2>\n<h3 id=\"\u6574\u6570\u8f6c\u7f57\u9a6c\u6570\u5b57\">\u6574\u6570\u8f6c\u7f57\u9a6c\u6570\u5b57<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-46\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7f57\u9a6c\u6570\u5b57\u5305\u542b\u4ee5\u4e0b\u4e03\u79cd\u5b57\u7b26\uff1a <code>I<\/code>\uff0c <code>V<\/code>\uff0c <code>X<\/code>\uff0c <code>L<\/code>\uff0c<code>C<\/code>\uff0c<code>D<\/code> \u548c <code>M<\/code>\u3002<\/p>\n<pre><code>\u5b57\u7b26          \u6570\u503c\nI             1\nV             5\nX             10\nL             50\nC             100\nD             500\nM             1000\n<\/code><\/pre>\n<p>\u4f8b\u5982\uff0c \u7f57\u9a6c\u6570\u5b57 2 \u5199\u505a <code>II<\/code> \uff0c\u5373\u4e3a\u4e24\u4e2a\u5e76\u5217\u7684 1\u300212 \u5199\u505a <code>XII<\/code> \uff0c\u5373\u4e3a <code>X<\/code> + <code>II<\/code> \u3002 27 \u5199\u505a <code>XXVII<\/code>, \u5373\u4e3a <code>XX<\/code> + <code>V<\/code> + <code>II<\/code> \u3002<\/p>\n<p>\u901a\u5e38\u60c5\u51b5\u4e0b\uff0c\u7f57\u9a6c\u6570\u5b57\u4e2d\u5c0f\u7684\u6570\u5b57\u5728\u5927\u7684\u6570\u5b57\u7684\u53f3\u8fb9\u3002\u4f46\u4e5f\u5b58\u5728\u7279\u4f8b\uff0c\u4f8b\u5982 4 \u4e0d\u5199\u505a <code>IIII<\/code>\uff0c\u800c\u662f <code>IV<\/code>\u3002\u6570\u5b57 1 \u5728\u6570\u5b57 5 \u7684\u5de6\u8fb9\uff0c\u6240\u8868\u793a\u7684\u6570\u7b49\u4e8e\u5927\u6570 5 \u51cf\u5c0f\u6570 1 \u5f97\u5230\u7684\u6570\u503c 4 \u3002\u540c\u6837\u5730\uff0c\u6570\u5b57 9 \u8868\u793a\u4e3a <code>IX<\/code>\u3002\u8fd9\u4e2a\u7279\u6b8a\u7684\u89c4\u5219\u53ea\u9002\u7528\u4e8e\u4ee5\u4e0b\u516d\u79cd\u60c5\u51b5\uff1a<\/p>\n<ul>\n<li><code>I<\/code> \u53ef\u4ee5\u653e\u5728 <code>V<\/code> (5) \u548c <code>X<\/code> (10) \u7684\u5de6\u8fb9\uff0c\u6765\u8868\u793a 4 \u548c 9\u3002<\/li>\n<li><code>X<\/code> \u53ef\u4ee5\u653e\u5728 <code>L<\/code> (50) \u548c <code>C<\/code> (100) \u7684\u5de6\u8fb9\uff0c\u6765\u8868\u793a 40 \u548c 90\u3002<\/li>\n<li><code>C<\/code> \u53ef\u4ee5\u653e\u5728 <code>D<\/code> (500) \u548c <code>M<\/code> (1000) \u7684\u5de6\u8fb9\uff0c\u6765\u8868\u793a 400 \u548c 900\u3002<\/li>\n<\/ul>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\uff0c\u5c06\u5176\u8f6c\u4e3a\u7f57\u9a6c\u6570\u5b57\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-17\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u8d2a\u5fc3\u6cd5\u5219\uff1a\u6211\u4eec\u6bcf\u6b21\u5c3d\u91cf\u4f7f\u7528\u6700\u5927\u7684\u6570\u6765\u8868\u793a\u3002 \u6bd4\u5982\u5bf9\u4e8e <code>1994<\/code> \u8fd9\u4e2a\u6570\uff0c\u5982\u679c\u6211\u4eec\u6bcf\u6b21\u5c3d\u91cf\u7528\u6700\u5927\u7684\u6570\u6765\u8868\u793a\uff0c\u4f9d\u6b21\u9009 <code>1000<\/code>\uff0c<code>900<\/code>\uff0c<code>90<\/code>\uff0c<code>4<\/code>\uff0c\u4f1a\u5f97\u5230\u6b63\u786e\u7ed3\u679c <code>MCMXCIV<\/code>\u3002<\/p>\n<p>\u6240\u4ee5\uff0c\u6211\u4eec\u5c06\u54c8\u5e0c\u8868\u6309\u7167\u4ece\u5927\u5230\u5c0f\u7684\u987a\u5e8f\u6392\u5217\uff0c\u7136\u540e\u904d\u5386\u54c8\u5e0c\u8868\uff0c\u76f4\u5230\u8868\u793a\u5b8c\u6574\u4e2a\u8f93\u5165<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-47\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;string&gt;\n\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    string intToRoman(int num) {\n        int values[] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };\n        string reps[] = { \"M\", \"CM\", \"D\", \"CD\", \"C\", \"XC\", \"L\", \"XL\", \"X\", \"IX\", \"V\", \"IV\", \"I\" };\n\n        string res;\n            for (int i = 0; i &lt; 13; i++)  \/\/\u8fd9\u91cc\u4e0d\u4f7f\u7528\u56fe\u91cc\u7684count\u4e86\uff0c\u4e00\u904d\u4e00\u904d\u6765\u5c31\u884c\u4e86\n                while (num &gt;= values[i])\n                {\n                    num -= values[i];\n                    res += reps[i];\n                }\n        return res;\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: num = 3\n\u8f93\u51fa: \"III\"\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: num = 4\n\u8f93\u51fa: \"IV\"\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3:<\/strong><\/p>\n<pre><code>\u8f93\u5165: num = 9\n\u8f93\u51fa: \"IX\"\n<\/code><\/pre>\n<h3 id=\"\u4e70\u5356\u80a1\u7968\u7684\u6700\u4f73\u65f6\u673a\u2171\">\u4e70\u5356\u80a1\u7968\u7684\u6700\u4f73\u65f6\u673a\u2161<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-47\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>prices<\/code> \uff0c\u5176\u4e2d <code>prices[i]<\/code> \u8868\u793a\u67d0\u652f\u80a1\u7968\u7b2c <code>i<\/code> \u5929\u7684\u4ef7\u683c\u3002<\/p>\n<p>\u5728\u6bcf\u4e00\u5929\uff0c\u4f60\u53ef\u4ee5\u51b3\u5b9a\u662f\u5426\u8d2d\u4e70\u548c\/\u6216\u51fa\u552e\u80a1\u7968\u3002\u4f60\u5728\u4efb\u4f55\u65f6\u5019 <strong>\u6700\u591a<\/strong> \u53ea\u80fd\u6301\u6709 <strong>\u4e00\u80a1<\/strong> \u80a1\u7968\u3002\u4f60\u4e5f\u53ef\u4ee5\u5148\u8d2d\u4e70\uff0c\u7136\u540e\u5728 <strong>\u540c\u4e00\u5929<\/strong> \u51fa\u552e\u3002<\/p>\n<p>\u8fd4\u56de <em>\u4f60\u80fd\u83b7\u5f97\u7684 <strong>\u6700\u5927<\/strong> \u5229\u6da6<\/em> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-18\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u7531\u4e8e\u8fd9\u91cc\u7684\u80a1\u7968\u53ef\u4ee5\u65e5\u629b,\u53ea\u9700\u8003\u8651\u90a3\u4e9b\u5904\u4e8e\u4e0a\u6da8\u9636\u6bb5\u7684\u80a1\u7968\u5c31\u884c.<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-48\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int maxProfit(vector&lt;int&gt;&amp; prices) {\n\n        int sum = 0;\n        int size = prices.size();\n        for (int i = size - 1; i &gt; 0; i--)\n        {\n            sum += max(0, (prices[i] - prices[i - 1]));\n        }\n\n        return sum;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1aprices = [7,1,5,3,6,4]\n\u8f93\u51fa\uff1a7\n\u89e3\u91ca\uff1a\u5728\u7b2c 2 \u5929\uff08\u80a1\u7968\u4ef7\u683c = 1\uff09\u7684\u65f6\u5019\u4e70\u5165\uff0c\u5728\u7b2c 3 \u5929\uff08\u80a1\u7968\u4ef7\u683c = 5\uff09\u7684\u65f6\u5019\u5356\u51fa, \u8fd9\u7b14\u4ea4\u6613\u6240\u80fd\u83b7\u5f97\u5229\u6da6 = 5 - 1 = 4 \u3002\n     \u968f\u540e\uff0c\u5728\u7b2c 4 \u5929\uff08\u80a1\u7968\u4ef7\u683c = 3\uff09\u7684\u65f6\u5019\u4e70\u5165\uff0c\u5728\u7b2c 5 \u5929\uff08\u80a1\u7968\u4ef7\u683c = 6\uff09\u7684\u65f6\u5019\u5356\u51fa, \u8fd9\u7b14\u4ea4\u6613\u6240\u80fd\u83b7\u5f97\u5229\u6da6 = 6 - 3 = 3 \u3002\n     \u603b\u5229\u6da6\u4e3a 4 + 3 = 7 \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1aprices = [1,2,3,4,5]\n\u8f93\u51fa\uff1a4\n\u89e3\u91ca\uff1a\u5728\u7b2c 1 \u5929\uff08\u80a1\u7968\u4ef7\u683c = 1\uff09\u7684\u65f6\u5019\u4e70\u5165\uff0c\u5728\u7b2c 5 \u5929 \uff08\u80a1\u7968\u4ef7\u683c = 5\uff09\u7684\u65f6\u5019\u5356\u51fa, \u8fd9\u7b14\u4ea4\u6613\u6240\u80fd\u83b7\u5f97\u5229\u6da6 = 5 - 1 = 4 \u3002\n     \u603b\u5229\u6da6\u4e3a 4 \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aprices = [7,6,4,3,1]\n\u8f93\u51fa\uff1a0\n\u89e3\u91ca\uff1a\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b, \u4ea4\u6613\u65e0\u6cd5\u83b7\u5f97\u6b63\u5229\u6da6\uff0c\u6240\u4ee5\u4e0d\u53c2\u4e0e\u4ea4\u6613\u53ef\u4ee5\u83b7\u5f97\u6700\u5927\u5229\u6da6\uff0c\u6700\u5927\u5229\u6da6\u4e3a 0 \u3002\n<\/code><\/pre>\n<h3 id=\"\u8df3\u8dc3\u6e38\u620f\">\u8df3\u8dc3\u6e38\u620f<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-48\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u975e\u8d1f\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \uff0c\u4f60\u6700\u521d\u4f4d\u4e8e\u6570\u7ec4\u7684 <strong>\u7b2c\u4e00\u4e2a\u4e0b\u6807<\/strong> \u3002\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e2a\u5143\u7d20\u4ee3\u8868\u4f60\u5728\u8be5\u4f4d\u7f6e\u53ef\u4ee5\u8df3\u8dc3\u7684\u6700\u5927\u957f\u5ea6\u3002<\/p>\n<p>\u5224\u65ad\u4f60\u662f\u5426\u80fd\u591f\u5230\u8fbe\u6700\u540e\u4e00\u4e2a\u4e0b\u6807\uff0c\u5982\u679c\u53ef\u4ee5\uff0c\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-31\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8fd9\u6837\u4ee5\u6765\uff0c\u6211\u4eec\u4f9d\u6b21\u904d\u5386\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e00\u4e2a\u4f4d\u7f6e\uff0c\u5e76\u5b9e\u65f6\u7ef4\u62a4 \u6700\u8fdc\u53ef\u4ee5\u5230\u8fbe\u7684\u4f4d\u7f6e\u3002\u5bf9\u4e8e\u5f53\u524d\u904d\u5386\u5230\u7684\u4f4d\u7f6e <code>x<\/code>\uff0c\u5982\u679c\u5b83\u5728 \u6700\u8fdc\u53ef\u4ee5\u5230\u8fbe\u7684\u4f4d\u7f6e \u7684\u8303\u56f4\u5185\uff0c\u90a3\u4e48\u6211\u4eec\u5c31\u53ef\u4ee5\u4ece\u8d77\u70b9\u901a\u8fc7\u82e5\u5e72\u6b21\u8df3\u8dc3\u5230\u8fbe\u8be5\u4f4d\u7f6e\uff0c\u56e0\u6b64\u6211\u4eec\u53ef\u4ee5\u7528 <code>x+nums[x]<\/code>\u66f4\u65b0 \u6700\u8fdc\u53ef\u4ee5\u5230\u8fbe\u7684\u4f4d\u7f6e\u3002<\/p>\n<p>\u5728\u904d\u5386\u7684\u8fc7\u7a0b\u4e2d\uff0c\u5982\u679c \u6700\u8fdc\u53ef\u4ee5\u5230\u8fbe\u7684\u4f4d\u7f6e \u5927\u4e8e\u7b49\u4e8e\u6570\u7ec4\u4e2d\u7684\u6700\u540e\u4e00\u4e2a\u4f4d\u7f6e\uff0c\u90a3\u5c31\u8bf4\u660e\u6700\u540e\u4e00\u4e2a\u4f4d\u7f6e\u53ef\u8fbe\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u76f4\u63a5\u8fd4\u56de <code>True<\/code> \u4f5c\u4e3a\u7b54\u6848\u3002\u53cd\u4e4b\uff0c\u5982\u679c\u5728\u904d\u5386\u7ed3\u675f\u540e\uff0c\u6700\u540e\u4e00\u4e2a\u4f4d\u7f6e\u4ecd\u7136\u4e0d\u53ef\u8fbe\uff0c\u6211\u4eec\u5c31\u8fd4\u56de <code>False<\/code> \u4f5c\u4e3a\u7b54\u6848\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-49\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    bool canJump(vector&lt;int&gt;&amp; nums) {\n        int nums_size = nums.size();\n        int maxstep = 0;\n        for (int i = 0; i &lt; nums_size - 1; i++)\n        {\n            if (i &lt;= maxstep) \/\/\u9996\u5148\u8981\u5224\u65ad\u662f\u5426\u80fd\u5230\u8fbe\u4e0b\u6807\u4f4d\u7f6e\n            {\n                maxstep = max((nums[i] + i), maxstep);\n            }\n\n            if (maxstep &gt;= nums_size - 1)\n                return true;\n        }\n\n        return false;\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1anums = [2,3,1,1,4]\n\u8f93\u51fa\uff1atrue\n\u89e3\u91ca\uff1a\u53ef\u4ee5\u5148\u8df3 1 \u6b65\uff0c\u4ece\u4e0b\u6807 0 \u5230\u8fbe\u4e0b\u6807 1, \u7136\u540e\u518d\u4ece\u4e0b\u6807 1 \u8df3 3 \u6b65\u5230\u8fbe\u6700\u540e\u4e00\u4e2a\u4e0b\u6807\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1anums = [3,2,1,0,4]\n\u8f93\u51fa\uff1afalse\n\u89e3\u91ca\uff1a\u65e0\u8bba\u600e\u6837\uff0c\u603b\u4f1a\u5230\u8fbe\u4e0b\u6807\u4e3a 3 \u7684\u4f4d\u7f6e\u3002\u4f46\u8be5\u4e0b\u6807\u7684\u6700\u5927\u8df3\u8dc3\u957f\u5ea6\u662f 0 \uff0c \u6240\u4ee5\u6c38\u8fdc\u4e0d\u53ef\u80fd\u5230\u8fbe\u6700\u540e\u4e00\u4e2a\u4e0b\u6807\u3002\n<\/code><\/pre>\n<h3 id=\"\u8df3\u8dc3\u6e38\u620f\u2171\">\u8df3\u8dc3\u6e38\u620f\u2161<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-49\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u957f\u5ea6\u4e3a <code>n<\/code> \u7684 <strong>0 \u7d22\u5f15<\/strong>\u6574\u6570\u6570\u7ec4 <code>nums<\/code>\u3002\u521d\u59cb\u4f4d\u7f6e\u4e3a <code>nums[0]<\/code>\u3002<\/p>\n<p>\u6bcf\u4e2a\u5143\u7d20 <code>nums[i]<\/code> \u8868\u793a\u4ece\u7d22\u5f15 <code>i<\/code> \u5411\u524d\u8df3\u8f6c\u7684\u6700\u5927\u957f\u5ea6\u3002\u6362\u53e5\u8bdd\u8bf4\uff0c\u5982\u679c\u4f60\u5728 <code>nums[i]<\/code> \u5904\uff0c\u4f60\u53ef\u4ee5\u8df3\u8f6c\u5230\u4efb\u610f <code>nums[i + j]<\/code> \u5904:<\/p>\n<ul>\n<li><code>0 &lt;= j &lt;= nums[i]<\/code><\/li>\n<li><code>i + j &lt; n<\/code><\/li>\n<\/ul>\n<p>\u8fd4\u56de\u5230\u8fbe <code>nums[n - 1]<\/code> \u7684\u6700\u5c0f\u8df3\u8dc3\u6b21\u6570\u3002\u751f\u6210\u7684\u6d4b\u8bd5\u7528\u4f8b\u53ef\u4ee5\u5230\u8fbe <code>nums[n - 1]<\/code>\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-32\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u4ece\u5934\u5f00\u59cb,\u8ba1\u7b97\u80fd\u8d70\u5230\u6700\u8fdc\u7684\u8ddd\u79bb <code>max(maxPos, i + nums[i])<\/code> ,\u540c\u65f6\u5224\u65ad\u662f\u5426\u8d70\u5230\u5c3d\u5934<code>end<\/code><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-50\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int jump(vector&lt;int&gt;&amp; nums) {\n        int maxPos = 0, n = nums.size(), end = 0, step = 0;\n        for (int i = 0; i &lt; n - 1; ++i) {\n            if (maxPos &gt;= i) {\n                maxPos = max(maxPos, i + nums[i]);\n                if (i == end) {\n                    end = maxPos;\n                    ++step;\n                }\n            }\n        }\n        return step;\n    }\n};\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165: nums = [2,3,1,1,4]\n\u8f93\u51fa: 2\n\u89e3\u91ca: \u8df3\u5230\u6700\u540e\u4e00\u4e2a\u4f4d\u7f6e\u7684\u6700\u5c0f\u8df3\u8dc3\u6570\u662f 2\u3002\n     \u4ece\u4e0b\u6807\u4e3a 0 \u8df3\u5230\u4e0b\u6807\u4e3a 1 \u7684\u4f4d\u7f6e\uff0c\u8df3 1 \u6b65\uff0c\u7136\u540e\u8df3 3 \u6b65\u5230\u8fbe\u6570\u7ec4\u7684\u6700\u540e\u4e00\u4e2a\u4f4d\u7f6e\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165: nums = [2,3,0,1,4]\n\u8f93\u51fa: 2\n<\/code><\/pre>\n<h3 id=\"\u52a0\u6cb9\u7ad9\">\u52a0\u6cb9\u7ad9<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-50\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u5728\u4e00\u6761\u73af\u8def\u4e0a\u6709 <code>n<\/code> \u4e2a\u52a0\u6cb9\u7ad9\uff0c\u5176\u4e2d\u7b2c <code>i<\/code> \u4e2a\u52a0\u6cb9\u7ad9\u6709\u6c7d\u6cb9 <code>gas[i]<\/code> \u5347\u3002<\/p>\n<p>\u4f60\u6709\u4e00\u8f86\u6cb9\u7bb1\u5bb9\u91cf\u65e0\u9650\u7684\u7684\u6c7d\u8f66\uff0c\u4ece\u7b2c <code>i<\/code> \u4e2a\u52a0\u6cb9\u7ad9\u5f00\u5f80\u7b2c <code>i+1<\/code> \u4e2a\u52a0\u6cb9\u7ad9\u9700\u8981\u6d88\u8017\u6c7d\u6cb9 <code>cost[i]<\/code> \u5347\u3002\u4f60\u4ece\u5176\u4e2d\u7684\u4e00\u4e2a\u52a0\u6cb9\u7ad9\u51fa\u53d1\uff0c\u5f00\u59cb\u65f6\u6cb9\u7bb1\u4e3a\u7a7a\u3002<\/p>\n<p>\u7ed9\u5b9a\u4e24\u4e2a\u6574\u6570\u6570\u7ec4 <code>gas<\/code> \u548c <code>cost<\/code> \uff0c\u5982\u679c\u4f60\u53ef\u4ee5\u6309\u987a\u5e8f\u7ed5\u73af\u8def\u884c\u9a76\u4e00\u5468\uff0c\u5219\u8fd4\u56de\u51fa\u53d1\u65f6\u52a0\u6cb9\u7ad9\u7684\u7f16\u53f7\uff0c\u5426\u5219\u8fd4\u56de <code>-1<\/code> \u3002\u5982\u679c\u5b58\u5728\u89e3\uff0c\u5219 <strong>\u4fdd\u8bc1<\/strong> \u5b83\u662f <strong>\u552f\u4e00<\/strong> \u7684\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-33\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6211\u4eec\u9996\u5148\u68c0\u67e5\u7b2c 0 \u4e2a\u52a0\u6cb9\u7ad9\uff0c\u5e76\u8bd5\u56fe\u5224\u65ad\u80fd\u5426\u73af\u7ed5\u4e00\u5468\uff1b\u5982\u679c\u4e0d\u80fd\uff0c\u5c31\u4ece\u7b2c\u4e00\u4e2a\u65e0\u6cd5\u5230\u8fbe\u7684\u52a0\u6cb9\u7ad9\u5f00\u59cb\u7ee7\u7eed\u68c0\u67e5\u3002<\/p>\n<p>\u8fd9\u6bb5\u4ee3\u7801\u7684\u76ee\u7684\u662f\u786e\u5b9a\u4e00\u4e2a\u8d77\u59cb\u70b9\uff0c\u4f7f\u5f97\u4e00\u8f86\u6c7d\u8f66\u4ece\u8be5\u70b9\u51fa\u53d1\u80fd\u591f\u904d\u5386\u5b8c\u4e00\u4e2a\u5faa\u73af\u8def\u5f84\uff08\u7531<code>gas<\/code>\u548c<code>cost<\/code>\u4e24\u4e2a\u6570\u7ec4\u8868\u793a\uff09\uff0c\u800c\u4e0d\u9700\u8981\u8017\u5c3d\u6c7d\u6cb9\u3002\u5176\u4e2d\uff0c<code>gas[i]<\/code>\u8868\u793a\u5728\u7b2c<code>i<\/code>\u4e2a\u52a0\u6cb9\u7ad9\u53ef\u4ee5\u83b7\u5f97\u7684\u6c7d\u6cb9\u91cf\uff0c\u800c<code>cost[i]<\/code>\u8868\u793a\u6c7d\u8f66\u4ece\u7b2c<code>i<\/code>\u4e2a\u52a0\u6cb9\u7ad9\u5230\u7b2c<code>i+1<\/code>\u4e2a\u52a0\u6cb9\u7ad9\uff08\u6216\u56de\u5230\u8d77\u70b9\uff09\u6240\u9700\u7684\u6c7d\u6cb9\u91cf\u3002<\/p>\n<ol start=\"\">\n<li><strong>\u53cc\u5c42\u5faa\u73af<\/strong>\uff1a\u4ee3\u7801\u4f7f\u7528\u4e86\u4e00\u4e2a\u5916\u5c42\u5faa\u73af\u548c\u4e00\u4e2a\u5185\u5c42\u5faa\u73af\u3002\u5916\u5c42\u5faa\u73af\u904d\u5386\u6240\u6709\u53ef\u80fd\u7684\u8d77\u59cb\u70b9\uff0c\u800c\u5185\u5c42\u5faa\u73af\u5219\u5c1d\u8bd5\u4ece\u5f53\u524d\u8d77\u59cb\u70b9\u51fa\u53d1\uff0c\u904d\u5386\u6574\u4e2a\u8def\u5f84\uff0c\u5e76\u68c0\u67e5\u6c7d\u6cb9\u662f\u5426\u8db3\u591f\u3002<\/li>\n<li><strong>\u5185\u5c42\u5faa\u73af<\/strong>\uff1a<\/li>\n<\/ol>\n<pre><code>* `gasall`\u548c`costall`\u5206\u522b\u7528\u4e8e\u8bb0\u5f55\u4ece\u5f53\u524d\u8d77\u59cb\u70b9\u5f00\u59cb\u5230\u5f53\u524d\u52a0\u6cb9\u7ad9\u4e3a\u6b62\u7684\u7d2f\u79ef\u6c7d\u6cb9\u91cf\u548c\u7d2f\u79ef\u6d88\u8017\u91cf\u3002\n* `cnt`\u7528\u4e8e\u8bb0\u5f55\u4ece\u5f53\u524d\u8d77\u59cb\u70b9\u5f00\u59cb\u5df2\u7ecf\u904d\u5386\u4e86\u591a\u5c11\u4e2a\u52a0\u6cb9\u7ad9\u3002\n* \u5185\u5c42\u5faa\u73af\u4f1a\u5c1d\u8bd5\u4ece\u5f53\u524d\u8d77\u59cb\u70b9\u5f00\u59cb\uff0c\u4e00\u76f4\u904d\u5386\u5230\u8def\u5f84\u7684\u672b\u5c3e\u6216\u6c7d\u6cb9\u4e0d\u8db3\u4e3a\u6b62\u3002\n* \u5982\u679c\u5728\u904d\u5386\u8fc7\u7a0b\u4e2d\u53d1\u73b0`gasall`\u5c0f\u4e8e`costall`\uff0c\u5219\u8bf4\u660e\u4ece\u5f53\u524d\u8d77\u59cb\u70b9\u51fa\u53d1\u65e0\u6cd5\u904d\u5386\u5b8c\u6574\u4e2a\u8def\u5f84\uff0c\u56e0\u6b64\u8df3\u51fa\u5185\u5c42\u5faa\u73af\u3002\n<\/code><\/pre>\n<ol start=\"3\">\n<li><strong>\u786e\u5b9a\u8d77\u59cb\u70b9<\/strong>\uff1a<\/li>\n<\/ol>\n<pre><code>* \u5982\u679c\u5185\u5c42\u5faa\u73af\u80fd\u591f\u904d\u5386\u5b8c\u6574\u4e2a\u8def\u5f84\uff08\u5373`cnt == n`\uff09\uff0c\u90a3\u4e48\u8bf4\u660e\u4ece\u5f53\u524d\u8d77\u59cb\u70b9\u51fa\u53d1\u53ef\u4ee5\u904d\u5386\u5b8c\u6574\u4e2a\u8def\u5f84\uff0c\u56e0\u6b64\u8fd4\u56de\u8be5\u8d77\u59cb\u70b9\u7684\u7d22\u5f15\u3002\n* \u5426\u5219\uff0c\u66f4\u65b0\u8d77\u59cb\u70b9\u4e3a\u4e0b\u4e00\u4e2a\u5c1a\u672a\u5c1d\u8bd5\u8fc7\u7684\u52a0\u6cb9\u7ad9\uff08\u5373`i = i + cnt + 1`\uff09\u3002\u7531\u4e8e`cnt`\u8868\u793a\u4ece\u5f53\u524d\u8d77\u59cb\u70b9\u5f00\u59cb\u5df2\u7ecf\u904d\u5386\u4e86\u591a\u5c11\u4e2a\u52a0\u6cb9\u7ad9\uff0c\u56e0\u6b64`i + cnt + 1`\u786e\u4fdd\u4e86\u6211\u4eec\u4ece\u4e0b\u4e00\u4e2a\u5c1a\u672a\u5c1d\u8bd5\u8fc7\u7684\u52a0\u6cb9\u7ad9\u5f00\u59cb\u3002\n<\/code><\/pre>\n<ol start=\"4\">\n<li><strong>\u8fd4\u56de\u503c<\/strong>\uff1a<\/li>\n<\/ol>\n<pre><code>* \u5982\u679c\u80fd\u591f\u627e\u5230\u4e00\u4e2a\u8d77\u59cb\u70b9\u4f7f\u5f97\u6c7d\u8f66\u53ef\u4ee5\u904d\u5386\u5b8c\u6574\u4e2a\u8def\u5f84\uff0c\u5219\u8fd4\u56de\u8be5\u8d77\u59cb\u70b9\u7684\u7d22\u5f15\u3002\n* \u5426\u5219\uff0c\u8fd4\u56de-1\uff0c\u8868\u793a\u4e0d\u5b58\u5728\u8fd9\u6837\u7684\u8d77\u59cb\u70b9\u3002\n<\/code><\/pre>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-51\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int canCompleteCircuit(vector&lt;int&gt;&amp; gas, vector&lt;int&gt;&amp; cost) {\n        int n = gas.size();\n        int i = 0;\n        while (i &lt; n) {\n            int sumOfGas = 0, sumOfCost = 0;\n            int cnt = 0;\n            while (cnt &lt; n) {\n                int j = (i + cnt) % n;\n                sumOfGas += gas[j];\n                sumOfCost += cost[j];\n                if (sumOfCost &gt; sumOfGas) {\n                    break;\n                }\n                cnt++;\n            }\n            if (cnt == n) {\n                return i;\n            }\n            else {\n                i = i + cnt + 1;\n            }\n        }\n        return -1;\n    }\n};\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: gas = [1,2,3,4,5], cost = [3,4,5,1,2]\n\u8f93\u51fa: 3\n\u89e3\u91ca:\n\u4ece 3 \u53f7\u52a0\u6cb9\u7ad9(\u7d22\u5f15\u4e3a 3 \u5904)\u51fa\u53d1\uff0c\u53ef\u83b7\u5f97 4 \u5347\u6c7d\u6cb9\u3002\u6b64\u65f6\u6cb9\u7bb1\u6709 = 0 + 4 = 4 \u5347\u6c7d\u6cb9\n\u5f00\u5f80 4 \u53f7\u52a0\u6cb9\u7ad9\uff0c\u6b64\u65f6\u6cb9\u7bb1\u6709 4 - 1 + 5 = 8 \u5347\u6c7d\u6cb9\n\u5f00\u5f80 0 \u53f7\u52a0\u6cb9\u7ad9\uff0c\u6b64\u65f6\u6cb9\u7bb1\u6709 8 - 2 + 1 = 7 \u5347\u6c7d\u6cb9\n\u5f00\u5f80 1 \u53f7\u52a0\u6cb9\u7ad9\uff0c\u6b64\u65f6\u6cb9\u7bb1\u6709 7 - 3 + 2 = 6 \u5347\u6c7d\u6cb9\n\u5f00\u5f80 2 \u53f7\u52a0\u6cb9\u7ad9\uff0c\u6b64\u65f6\u6cb9\u7bb1\u6709 6 - 4 + 3 = 5 \u5347\u6c7d\u6cb9\n\u5f00\u5f80 3 \u53f7\u52a0\u6cb9\u7ad9\uff0c\u4f60\u9700\u8981\u6d88\u8017 5 \u5347\u6c7d\u6cb9\uff0c\u6b63\u597d\u8db3\u591f\u4f60\u8fd4\u56de\u5230 3 \u53f7\u52a0\u6cb9\u7ad9\u3002\n\u56e0\u6b64\uff0c3 \u53ef\u4e3a\u8d77\u59cb\u7d22\u5f15\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: gas = [2,3,4], cost = [3,4,3]\n\u8f93\u51fa: -1\n\u89e3\u91ca:\n\u4f60\u4e0d\u80fd\u4ece 0 \u53f7\u6216 1 \u53f7\u52a0\u6cb9\u7ad9\u51fa\u53d1\uff0c\u56e0\u4e3a\u6ca1\u6709\u8db3\u591f\u7684\u6c7d\u6cb9\u53ef\u4ee5\u8ba9\u4f60\u884c\u9a76\u5230\u4e0b\u4e00\u4e2a\u52a0\u6cb9\u7ad9\u3002\n\u6211\u4eec\u4ece 2 \u53f7\u52a0\u6cb9\u7ad9\u51fa\u53d1\uff0c\u53ef\u4ee5\u83b7\u5f97 4 \u5347\u6c7d\u6cb9\u3002 \u6b64\u65f6\u6cb9\u7bb1\u6709 = 0 + 4 = 4 \u5347\u6c7d\u6cb9\n\u5f00\u5f80 0 \u53f7\u52a0\u6cb9\u7ad9\uff0c\u6b64\u65f6\u6cb9\u7bb1\u6709 4 - 3 + 2 = 3 \u5347\u6c7d\u6cb9\n\u5f00\u5f80 1 \u53f7\u52a0\u6cb9\u7ad9\uff0c\u6b64\u65f6\u6cb9\u7bb1\u6709 3 - 3 + 3 = 3 \u5347\u6c7d\u6cb9\n\u4f60\u65e0\u6cd5\u8fd4\u56de 2 \u53f7\u52a0\u6cb9\u7ad9\uff0c\u56e0\u4e3a\u8fd4\u7a0b\u9700\u8981\u6d88\u8017 4 \u5347\u6c7d\u6cb9\uff0c\u4f46\u662f\u4f60\u7684\u6cb9\u7bb1\u53ea\u6709 3 \u5347\u6c7d\u6cb9\u3002\n\u56e0\u6b64\uff0c\u65e0\u8bba\u600e\u6837\uff0c\u4f60\u90fd\u4e0d\u53ef\u80fd\u7ed5\u73af\u8def\u884c\u9a76\u4e00\u5468\u3002\n<\/code><\/pre>\n<h3 id=\"\u5206\u53d1\u7cd6\u679c\">\u5206\u53d1\u7cd6\u679c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-51\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p><code>n<\/code> \u4e2a\u5b69\u5b50\u7ad9\u6210\u4e00\u6392\u3002\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>ratings<\/code> \u8868\u793a\u6bcf\u4e2a\u5b69\u5b50\u7684\u8bc4\u5206\u3002<\/p>\n<p>\u4f60\u9700\u8981\u6309\u7167\u4ee5\u4e0b\u8981\u6c42\uff0c\u7ed9\u8fd9\u4e9b\u5b69\u5b50\u5206\u53d1\u7cd6\u679c\uff1a<\/p>\n<ul>\n<li>\u6bcf\u4e2a\u5b69\u5b50\u81f3\u5c11\u5206\u914d\u5230 <code>1<\/code> \u4e2a\u7cd6\u679c\u3002<\/li>\n<li>\u76f8\u90bb\u4e24\u4e2a\u5b69\u5b50\u8bc4\u5206\u66f4\u9ad8\u7684\u5b69\u5b50\u4f1a\u83b7\u5f97\u66f4\u591a\u7684\u7cd6\u679c\u3002<\/li>\n<\/ul>\n<p>\u8bf7\u4f60\u7ed9\u6bcf\u4e2a\u5b69\u5b50\u5206\u53d1\u7cd6\u679c\uff0c\u8ba1\u7b97\u5e76\u8fd4\u56de\u9700\u8981\u51c6\u5907\u7684 <strong>\u6700\u5c11\u7cd6\u679c\u6570\u76ee<\/strong> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-34\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6211\u4eec\u53ef\u4ee5\u5c06\u300c\u76f8\u90bb\u7684\u5b69\u5b50\u4e2d\uff0c\u8bc4\u5206\u9ad8\u7684\u5b69\u5b50\u5fc5\u987b\u83b7\u5f97\u66f4\u591a\u7684\u7cd6\u679c\u300d\u8fd9\u53e5\u8bdd\u62c6\u5206\u4e3a\u4e24\u4e2a\u89c4\u5219\uff0c\u5206\u522b\u5904\u7406\u3002<\/p>\n<p>\u5de6\u89c4\u5219\uff1a\u5f53 <code>ratings[i\u22121]&lt;ratings[i]<\/code>\u65f6\uff0c<code>i<\/code> \u53f7\u5b66\u751f\u7684\u7cd6\u679c\u6570\u91cf\u5c06\u6bd4 <code>i\u22121<\/code>\u53f7\u5b69\u5b50\u7684\u7cd6\u679c\u6570\u91cf\u591a\u3002<\/p>\n<p>\u53f3\u89c4\u5219\uff1a\u5f53 <code>ratings[i]&gt;ratings[i+1]<\/code>\u65f6\uff0c<code>i<\/code> \u53f7\u5b66\u751f\u7684\u7cd6\u679c\u6570\u91cf\u5c06\u6bd4 <code>i+1<\/code>\u53f7\u5b69\u5b50\u7684\u7cd6\u679c\u6570\u91cf\u591a\u3002<\/p>\n<p>\u6211\u4eec\u904d\u5386\u8be5\u6570\u7ec4\u4e24\u6b21\uff0c\u5904\u7406\u51fa\u6bcf\u4e00\u4e2a\u5b66\u751f\u5206\u522b\u6ee1\u8db3\u5de6\u89c4\u5219\u6216\u53f3\u89c4\u5219\u65f6\uff0c\u6700\u5c11\u9700\u8981\u88ab\u5206\u5f97\u7684\u7cd6\u679c\u6570\u91cf\u3002\u6bcf\u4e2a\u4eba\u6700\u7ec8\u5206\u5f97\u7684\u7cd6\u679c\u6570\u91cf\u5373\u4e3a\u8fd9\u4e24\u4e2a\u6570\u91cf\u7684\u6700\u5927\u503c\u3002<\/p>\n<p>\u5728\u5b9e\u9645\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u5148\u8ba1\u7b97\u51fa\u5de6\u89c4\u5219 <code>left<\/code> \u6570\u7ec4\uff0c\u5728\u8ba1\u7b97\u53f3\u89c4\u5219\u7684\u65f6\u5019\u53ea\u9700\u8981\u7528\u5355\u4e2a\u53d8\u91cf\u8bb0\u5f55\u5f53\u524d\u4f4d\u7f6e\u7684\u53f3\u89c4\u5219\uff0c\u540c\u65f6\u8ba1\u7b97\u7b54\u6848\u5373\u53ef\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-52\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int candy(vector&lt;int&gt;&amp; ratings) {\n        int n = ratings.size();\n        vector&lt;int&gt; left(n);\n        for (int i = 0; i &lt; n; i++) {\n            if (i &gt; 0 &amp;&amp; ratings[i] &gt; ratings[i - 1]) {\n                left[i] = left[i - 1] + 1;\n            }\n            else {\n                left[i] = 1;\n            }\n        }\n        int right = 0, ret = 0;\n        for (int i = n - 1; i &gt;= 0; i--) {\n            if (i &lt; n - 1 &amp;&amp; ratings[i] &gt; ratings[i + 1]) {\n                right++;\n            }\n            else {\n                right = 1;\n            }\n            ret += max(left[i], right);\n        }\n        return ret;\n    }\n};\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1aratings = [1,0,2]\n\u8f93\u51fa\uff1a5\n\u89e3\u91ca\uff1a\u4f60\u53ef\u4ee5\u5206\u522b\u7ed9\u7b2c\u4e00\u4e2a\u3001\u7b2c\u4e8c\u4e2a\u3001\u7b2c\u4e09\u4e2a\u5b69\u5b50\u5206\u53d1 2\u30011\u30012 \u9897\u7cd6\u679c\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1aratings = [1,2,2]\n\u8f93\u51fa\uff1a4\n\u89e3\u91ca\uff1a\u4f60\u53ef\u4ee5\u5206\u522b\u7ed9\u7b2c\u4e00\u4e2a\u3001\u7b2c\u4e8c\u4e2a\u3001\u7b2c\u4e09\u4e2a\u5b69\u5b50\u5206\u53d1 1\u30012\u30011 \u9897\u7cd6\u679c\u3002\n     \u7b2c\u4e09\u4e2a\u5b69\u5b50\u53ea\u5f97\u5230 1 \u9897\u7cd6\u679c\uff0c\u8fd9\u6ee1\u8db3\u9898\u9762\u4e2d\u7684\u4e24\u4e2a\u6761\u4ef6\u3002\n<\/code><\/pre>\n<h3 id=\"\u5b89\u6392\u5de5\u4f5c\u4ee5\u8fbe\u5230\u6700\u5927\u6536\u76ca\">\u5b89\u6392\u5de5\u4f5c\u4ee5\u8fbe\u5230\u6700\u5927\u6536\u76ca<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-52\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u4f60\u6709 <code>n<\/code> \u4e2a\u5de5\u4f5c\u548c <code>m<\/code> \u4e2a\u5de5\u4eba\u3002\u7ed9\u5b9a\u4e09\u4e2a\u6570\u7ec4\uff1a <code>difficulty<\/code>, <code>profit<\/code> \u548c <code>worker<\/code> \uff0c\u5176\u4e2d:<\/p>\n<ul>\n<li><code>difficulty[i]<\/code> \u8868\u793a\u7b2c <code>i<\/code> \u4e2a\u5de5\u4f5c\u7684\u96be\u5ea6\uff0c<code>profit[i]<\/code> \u8868\u793a\u7b2c <code>i<\/code> \u4e2a\u5de5\u4f5c\u7684\u6536\u76ca\u3002<\/li>\n<li><code>worker[i]<\/code> \u662f\u7b2c <code>i<\/code> \u4e2a\u5de5\u4eba\u7684\u80fd\u529b\uff0c\u5373\u8be5\u5de5\u4eba\u53ea\u80fd\u5b8c\u6210\u96be\u5ea6\u5c0f\u4e8e\u7b49\u4e8e <code>worker[i]<\/code> \u7684\u5de5\u4f5c\u3002<\/li>\n<\/ul>\n<p>\u6bcf\u4e2a\u5de5\u4eba <strong>\u6700\u591a<\/strong> \u53ea\u80fd\u5b89\u6392 <strong>\u4e00\u4e2a<\/strong> \u5de5\u4f5c\uff0c\u4f46\u662f\u4e00\u4e2a\u5de5\u4f5c\u53ef\u4ee5 <strong>\u5b8c\u6210\u591a\u6b21<\/strong> \u3002<\/p>\n<ul>\n<li>\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u5982\u679c 3 \u4e2a\u5de5\u4eba\u90fd\u5c1d\u8bd5\u5b8c\u6210\u4e00\u4efd\u62a5\u916c\u4e3a <code>$1<\/code> \u7684\u540c\u6837\u5de5\u4f5c\uff0c\u90a3\u4e48\u603b\u6536\u76ca\u4e3a <code>$3<\/code> \u3002\u5982\u679c\u4e00\u4e2a\u5de5\u4eba\u4e0d\u80fd\u5b8c\u6210\u4efb\u4f55\u5de5\u4f5c\uff0c\u4ed6\u7684\u6536\u76ca\u4e3a <code>$0<\/code> \u3002<\/li>\n<\/ul>\n<p>\u8fd4\u56de <em>\u5728\u628a\u5de5\u4eba\u5206\u914d\u5230\u5de5\u4f5c\u5c97\u4f4d\u540e\uff0c\u6211\u4eec\u6240\u80fd\u83b7\u5f97\u7684\u6700\u5927\u5229\u6da6<\/em> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-35\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6211\u4eec\u9996\u5148\u5bf9\u5de5\u4eba\u6309\u7167\u80fd\u529b\u5927\u5c0f\u6392\u5e8f\uff0c\u5bf9\u5de5\u4f5c\u6309\u7167\u96be\u5ea6\u6392\u5e8f\u3002<\/p>\n<p>\u6211\u4eec\u4f7f\u7528\u300c\u53cc\u6307\u9488\u300d\u7684\u65b9\u6cd5\uff0c\u4e00\u4e2a\u6307\u9488\u6307\u5411\u5de5\u4eba\u6570\u7ec4\uff0c\u4e00\u4e2a\u6307\u5411\u4efb\u52a1\u6570\u7ec4\uff0c\u4ece\u4f4e\u96be\u5ea6\u7684\u4efb\u52a1\u5f00\u59cb\u904d\u5386\u3002\u5bf9\u4e8e\u6bcf\u4e2a\u5de5\u4eba\uff0c\u6211\u4eec\u7ee7\u7eed\u904d\u5386\u4efb\u52a1\uff0c\u76f4\u5230\u96be\u5ea6\u5927\u4e8e\u5176\u80fd\u529b\uff0c\u5e76\u628a\u53ef\u4ee5\u5b8c\u6210\u4efb\u52a1\u4e2d\u7684\u6700\u5927\u5229\u6da6\u66f4\u65b0\u5230\u7ed3\u679c\u4e2d\u3002<\/p>\n<p>\u6700\u540e\u8fd4\u56de\u6240\u6709\u5de5\u4eba\u80fd\u5f97\u5230\u7684\u5229\u6da6\u603b\u548c\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-53\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    int maxProfitAssignment(vector&lt;int&gt;&amp; difficulty, vector&lt;int&gt;&amp; profit, vector&lt;int&gt;&amp; worker) {\n        vector&lt;pair&lt;int, int&gt;&gt; jobs;\n        int n = profit.size(), res = 0, i = 0, best = 0;\n        for (int j = 0; j &lt; n; ++j) {\n            jobs.emplace_back(difficulty[j], profit[j]);\n        }\n        sort(jobs.begin(), jobs.end());\n        sort(worker.begin(), worker.end());\n        for (int w : worker) {\n            while (i &lt; n &amp;&amp; w &gt;= jobs[i].first) {\n                best = max(best, jobs[i].second);\n                i++;\n            }\n            res += best;\n        }\n        return res;\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165: difficulty = [2,4,6,8,10], profit = [10,20,30,40,50], worker = [4,5,6,7]\n\u8f93\u51fa: 100 \n\u89e3\u91ca: \u5de5\u4eba\u88ab\u5206\u914d\u7684\u5de5\u4f5c\u96be\u5ea6\u662f [4,4,6,6] \uff0c\u5206\u522b\u83b7\u5f97 [20,20,30,30] \u7684\u6536\u76ca\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: difficulty = [85,47,57], profit = [24,66,99], worker = [40,25,25]\n\u8f93\u51fa: 0\n<\/code><\/pre>\n<h2 id=\"\u5206\u6cbb\">\u5206\u6cbb<\/h2>\n<h3 id=\"\u591a\u6570\u5143\u7d20-3\">\u591a\u6570\u5143\u7d20<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-53\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u5927\u5c0f\u4e3a <code>n<\/code> \u7684\u6570\u7ec4 <code>nums<\/code> \uff0c\u8fd4\u56de\u5176\u4e2d\u7684\u591a\u6570\u5143\u7d20\u3002\u591a\u6570\u5143\u7d20\u662f\u6307\u5728\u6570\u7ec4\u4e2d\u51fa\u73b0\u6b21\u6570 <strong>\u5927\u4e8e<\/strong> <code>\u230a n\/2 \u230b<\/code> \u7684\u5143\u7d20\u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u5047\u8bbe\u6570\u7ec4\u662f\u975e\u7a7a\u7684\uff0c\u5e76\u4e14\u7ed9\u5b9a\u7684\u6570\u7ec4\u603b\u662f\u5b58\u5728\u591a\u6570\u5143\u7d20\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-19\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u5982\u679c\u6570 <code>a<\/code> \u662f\u6570\u7ec4 <code>nums<\/code> \u7684\u4f17\u6570\uff0c\u5982\u679c\u6211\u4eec\u5c06 <code>nums<\/code> \u5206\u6210\u4e24\u90e8\u5206\uff0c\u90a3\u4e48 <code>a<\/code> \u5fc5\u5b9a\u662f\u81f3\u5c11\u4e00\u90e8\u5206\u7684\u4f17\u6570\u3002<\/p>\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u53cd\u8bc1\u6cd5\u6765\u8bc1\u660e\u8fd9\u4e2a\u7ed3\u8bba\u3002\u5047\u8bbe <code>a<\/code> \u65e2\u4e0d\u662f\u5de6\u534a\u90e8\u5206\u7684\u4f17\u6570\uff0c\u4e5f\u4e0d\u662f\u53f3\u534a\u90e8\u5206\u7684\u4f17\u6570\uff0c\u90a3\u4e48 <code>a<\/code> \u51fa\u73b0\u7684\u6b21\u6570\u5c11\u4e8e <code>l \/ 2 + r \/ 2<\/code> \u6b21\uff0c\u5176\u4e2d <code>l<\/code> \u548c <code>r<\/code> \u5206\u522b\u662f\u5de6\u534a\u90e8\u5206\u548c\u53f3\u534a\u90e8\u5206\u7684\u957f\u5ea6\u3002\u7531\u4e8e <code>l \/ 2 + r \/ 2 &lt;= (l + r) \/ 2<\/code>\uff0c\u8bf4\u660e <code>a<\/code> \u4e5f\u4e0d\u662f\u6570\u7ec4 <code>nums<\/code> \u7684\u4f17\u6570\uff0c\u56e0\u6b64\u51fa\u73b0\u4e86\u77db\u76fe\u3002\u6240\u4ee5\u8fd9\u4e2a\u7ed3\u8bba\u662f\u6b63\u786e\u7684\u3002<\/p>\n<p>\u8fd9\u6837\u4ee5\u6765\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u4f7f\u7528\u5206\u6cbb\u6cd5\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff1a\u5c06\u6570\u7ec4\u5206\u6210\u5de6\u53f3\u4e24\u90e8\u5206\uff0c\u5206\u522b\u6c42\u51fa\u5de6\u534a\u90e8\u5206\u7684\u4f17\u6570 <code>a1<\/code> \u4ee5\u53ca\u53f3\u534a\u90e8\u5206\u7684\u4f17\u6570 <code>a2<\/code>\uff0c\u968f\u540e\u5728 <code>a1<\/code> \u548c <code>a2<\/code> \u4e2d\u9009\u51fa\u6b63\u786e\u7684\u4f17\u6570\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-54\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\n    int count_in_range(vector&lt;int&gt;&amp; nums, int target, int lo, int hi) {\n        int count = 0;\n        for (int i = lo; i &lt;= hi; ++i)\n            if (nums[i] == target)\n                ++count;\n        return count;\n    }\n    int majority_element_rec(vector&lt;int&gt;&amp; nums, int lo, int hi) {\n        if (lo == hi)\n            return nums[lo];\n        int mid = (lo + hi) \/ 2;\n        int left_majority = majority_element_rec(nums, lo, mid);\n        int right_majority = majority_element_rec(nums, mid + 1, hi);\n        if (count_in_range(nums, left_majority, lo, hi) &gt; (hi - lo + 1) \/ 2)\n            return left_majority;\n        if (count_in_range(nums, right_majority, lo, hi) &gt; (hi - lo + 1) \/ 2)\n            return right_majority;\n        return -1;\n    }\npublic:\n    int majorityElement(vector&lt;int&gt;&amp; nums) {\n        return majority_element_rec(nums, 0, nums.size() - 1);\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1anums = [3,2,3]\n\u8f93\u51fa\uff1a3\n    \n\u6a21\u62df\u8fc7\u7a0b\n\u8c03\u7528 majorityElement \u51fd\u6570\uff0c\u4f20\u5165\u6570\u7ec4 [3, 2, 3]\uff0c\u521d\u59cb\u8303\u56f4\u662f\u4ece\u7d22\u5f15 0 \u5230\u7d22\u5f15 2\u3002\n\u8c03\u7528 majority_element_rec \u51fd\u6570\uff0c\u4f20\u5165\u6570\u7ec4 [3, 2, 3]\uff0c\u8303\u56f4\u662f\u4ece\u7d22\u5f15 0 \u5230\u7d22\u5f15 2\u3002\n\u7531\u4e8e lo != hi\uff0c\u9012\u5f52\u7ee7\u7eed\u3002\u8ba1\u7b97\u4e2d\u95f4\u7d22\u5f15 mid = (0 + 2) \/ 2 = 1\u3002\n\u9012\u5f52\u8c03\u7528 majority_element_rec \u5728\u5de6\u534a\u90e8\u5206 [3, 2]\uff08\u8303\u56f4\u4ece 0 \u5230 1\uff09\u3002\n\u518d\u6b21\u68c0\u67e5 lo != hi\uff0c\u7ee7\u7eed\u9012\u5f52\u3002\n\u8fd9\u6b21 mid = (0 + 1) \/ 2 = 0\u3002\n\u9012\u5f52\u8c03\u7528 majority_element_rec \u5728\u5de6\u534a\u90e8\u5206 [3]\uff08\u8303\u56f4\u4ece 0 \u5230 0\uff09\u3002\nlo == hi\uff0c\u8fd4\u56de nums[0] = 3 \u4f5c\u4e3a\u5de6\u534a\u90e8\u5206\u7684\u591a\u6570\u5143\u7d20\u3002\n\u8fd4\u56de\u5de6\u534a\u90e8\u5206\u7684\u591a\u6570\u5143\u7d20 3\uff0c\u5e76\u8d4b\u503c\u7ed9 left_majority\u3002\n\u9012\u5f52\u8c03\u7528 majority_element_rec \u5728\u53f3\u534a\u90e8\u5206 [3]\uff08\u8303\u56f4\u4ece 2 \u5230 2\uff09\u3002\nlo == hi\uff0c\u8fd4\u56de nums[2] = 3 \u4f5c\u4e3a\u53f3\u534a\u90e8\u5206\u7684\u591a\u6570\u5143\u7d20\u3002\n\u8fd4\u56de\u53f3\u534a\u90e8\u5206\u7684\u591a\u6570\u5143\u7d20 3\uff0c\u5e76\u8d4b\u503c\u7ed9 right_majority\u3002\n\u73b0\u5728\uff0c\u68c0\u67e5 left_majority \u548c right_majority \u5728\u6574\u4e2a\u6570\u7ec4 [3, 2, 3] \u4e2d\u7684\u51fa\u73b0\u6b21\u6570\u3002\ncount_in_range(nums, left_majority, 0, 2) = 2\uff08\u56e0\u4e3a 3 \u5728\u6570\u7ec4\u4e2d\u51fa\u73b0\u4e86\u4e24\u6b21\uff09\u3002\n2 &gt; (2 - 0 + 1) \/ 2 \u662f\u771f\u7684\uff0c\u6240\u4ee5\u8fd4\u56de left_majority\uff0c\u5373 3\u3002\nmajorityElement \u51fd\u6570\u8fd4\u56de 3\uff0c\u8fd9\u662f\u6570\u7ec4 [3, 2, 3] \u4e2d\u7684\u591a\u6570\u5143\u7d20\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1anums = [2,2,1,1,1,2,2]\n\u8f93\u51fa\uff1a2\n<\/code><\/pre>\n<h3 id=\"\u4e24\u6570\u4e4b\u548c\u2171-\u8f93\u5165\u6709\u5e8f\u6570\u7ec4-2\">\u4e24\u6570\u4e4b\u548c\u2161-\u8f93\u5165\u6709\u5e8f\u6570\u7ec4<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-54\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u4e0b\u6807\u4ece <strong>1<\/strong> \u5f00\u59cb\u7684\u6574\u6570\u6570\u7ec4 <code>numbers<\/code> \uff0c\u8be5\u6570\u7ec4\u5df2\u6309 <strong>\u975e\u9012\u51cf\u987a\u5e8f\u6392\u5217<\/strong> \uff0c\u8bf7\u4f60\u4ece\u6570\u7ec4\u4e2d\u627e\u51fa\u6ee1\u8db3\u76f8\u52a0\u4e4b\u548c\u7b49\u4e8e\u76ee\u6807\u6570 <code>target<\/code> \u7684\u4e24\u4e2a\u6570\u3002\u5982\u679c\u8bbe\u8fd9\u4e24\u4e2a\u6570\u5206\u522b\u662f <code>numbers[index1]<\/code> \u548c <code>numbers[index2]<\/code> \uff0c\u5219 <code>1 &lt;= index1 &lt; index2 &lt;= numbers.length<\/code> \u3002<\/p>\n<p>\u4ee5\u957f\u5ea6\u4e3a 2 \u7684\u6574\u6570\u6570\u7ec4 <code>[index1, index2]<\/code> \u7684\u5f62\u5f0f\u8fd4\u56de\u8fd9\u4e24\u4e2a\u6574\u6570\u7684\u4e0b\u6807 <code>index1<\/code> \u548c <code>index2<\/code>\u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u5047\u8bbe\u6bcf\u4e2a\u8f93\u5165 <strong>\u53ea\u5bf9\u5e94\u552f\u4e00\u7684\u7b54\u6848<\/strong> \uff0c\u800c\u4e14\u4f60 <strong>\u4e0d\u53ef\u4ee5<\/strong> \u91cd\u590d\u4f7f\u7528\u76f8\u540c\u7684\u5143\u7d20\u3002<\/p>\n<p>\u4f60\u6240\u8bbe\u8ba1\u7684\u89e3\u51b3\u65b9\u6848\u5fc5\u987b\u53ea\u4f7f\u7528\u5e38\u91cf\u7ea7\u7684\u989d\u5916\u7a7a\u95f4\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-36\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8fd9\u9053\u9898\u903b\u8f91\u5f88\u7b80\u5355,\u9700\u8981\u5b66\u4e60\u7684\u662f\u8fb9\u754c\u7684\u5904\u7406<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-55\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;int&gt; twoSum(vector&lt;int&gt;&amp; numbers, int target) {\n        \n        int size = numbers.size();\n        \n        for (int i = 0; i &lt; size - 1; i++)\n        {\n            int low = i + 1 ;\n            int high = size - 1;\n            while (low &lt;= high) {\n                int mid = (low + high) &gt;&gt; 1;\n                if (numbers[mid] == target - numbers[i]) {\n                    return { i + 1, mid + 1 };\n                }\n                else if (numbers[mid] &gt; target - numbers[i]) {\n                    high = mid - 1;\n                }\n                else {\n                    low = mid + 1;\n                }\n            }\n        }\n\n        return {};\n\n\n    }\n};\n\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;int&gt; twoSum(vector&lt;int&gt;&amp; numbers, int target) {\n        \n        int size = numbers.size();\n        \n        for (int i = 0; i &lt; size - 1; i++)\n        {\n            int low = i ;\n            int high = size;\n            while (low &lt;  high) {\n                int mid = (low + high) &gt;&gt; 1;\n                if (numbers[mid] == target - numbers[i]) {\n                    return { i + 1, mid + 1 };\n                }\n                else if (numbers[mid] &gt; target - numbers[i]) {\n                    high = mid;\n                }\n                else {\n                    low = mid +1;\n                }\n            }\n        }\n\n        return {};\n\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anumbers = [2,7,11,15], target = 9\n\u8f93\u51fa\uff1a[1,2]\n\u89e3\u91ca\uff1a2 \u4e0e 7 \u4e4b\u548c\u7b49\u4e8e\u76ee\u6807\u6570 9 \u3002\u56e0\u6b64 index1 = 1, index2 = 2 \u3002\u8fd4\u56de [1, 2] \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anumbers = [2,3,4], target = 6\n\u8f93\u51fa\uff1a[1,3]\n\u89e3\u91ca\uff1a2 \u4e0e 4 \u4e4b\u548c\u7b49\u4e8e\u76ee\u6807\u6570 6 \u3002\u56e0\u6b64 index1 = 1, index2 = 3 \u3002\u8fd4\u56de [1, 3] \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anumbers = [-1,0], target = -1\n\u8f93\u51fa\uff1a[1,2]\n\u89e3\u91ca\uff1a-1 \u4e0e 0 \u4e4b\u548c\u7b49\u4e8e\u76ee\u6807\u6570 -1 \u3002\u56e0\u6b64 index1 = 1, index2 = 2 \u3002\u8fd4\u56de [1, 2] \u3002\n<\/code><\/pre>\n<h2 id=\"boyer-moore-\u6295\u7968\u7b97\u6cd5\">Boyer-Moore \u6295\u7968\u7b97\u6cd5<\/h2>\n<h3 id=\"\u591a\u6570\u5143\u7d20-4\">\u591a\u6570\u5143\u7d20<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-55\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u5927\u5c0f\u4e3a <code>n<\/code> \u7684\u6570\u7ec4 <code>nums<\/code> \uff0c\u8fd4\u56de\u5176\u4e2d\u7684\u591a\u6570\u5143\u7d20\u3002\u591a\u6570\u5143\u7d20\u662f\u6307\u5728\u6570\u7ec4\u4e2d\u51fa\u73b0\u6b21\u6570 <strong>\u5927\u4e8e<\/strong> <code>\u230a n\/2 \u230b<\/code> \u7684\u5143\u7d20\u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u5047\u8bbe\u6570\u7ec4\u662f\u975e\u7a7a\u7684\uff0c\u5e76\u4e14\u7ed9\u5b9a\u7684\u6570\u7ec4\u603b\u662f\u5b58\u5728\u591a\u6570\u5143\u7d20\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u89e3\u6790-20\">\u9898\u76ee\u89e3\u6790<\/h4>\n<p>\u6211\u4eec\u7ef4\u62a4\u4e00\u4e2a\u5019\u9009\u4f17\u6570 <code>candidate<\/code> \u548c\u5b83\u51fa\u73b0\u7684\u6b21\u6570 <code>count<\/code>\u3002\u521d\u59cb\u65f6 <code>candidate<\/code> \u53ef\u4ee5\u4e3a\u4efb\u610f\u503c\uff0c<code>count<\/code> \u4e3a 0\uff1b<\/p>\n<p>\u6211\u4eec\u904d\u5386\u6570\u7ec4 <code>nums<\/code> \u4e2d\u7684\u6240\u6709\u5143\u7d20\uff0c\u5bf9\u4e8e\u6bcf\u4e2a\u5143\u7d20 <code>x<\/code>\uff0c\u5728\u5224\u65ad <code>x<\/code> \u4e4b\u524d\uff0c\u5982\u679c <code>count<\/code> \u7684\u503c\u4e3a 0\uff0c\u6211\u4eec\u5148\u5c06 <code>x<\/code> \u7684\u503c\u8d4b\u4e88 <code>candidate<\/code>\uff0c\u968f\u540e\u6211\u4eec\u5224\u65ad <code>x<\/code>\uff1a<\/p>\n<p>\u5982\u679c <code>x<\/code> \u4e0e <code>candidate<\/code> \u76f8\u7b49\uff0c\u90a3\u4e48\u8ba1\u6570\u5668 <code>count<\/code> \u7684\u503c\u589e\u52a0 1\uff1b<\/p>\n<p>\u5982\u679c <code>x<\/code> \u4e0e <code>candidate<\/code> \u4e0d\u7b49\uff0c\u90a3\u4e48\u8ba1\u6570\u5668 <code>count<\/code> \u7684\u503c\u51cf\u5c11 1\u3002<\/p>\n<p>\u5728\u904d\u5386\u5b8c\u6210\u540e\uff0c<code>candidate<\/code> \u5373\u4e3a\u6574\u4e2a\u6570\u7ec4\u7684\u4f17\u6570\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-56\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    int majorityElement(vector&lt;int&gt;&amp; nums) {\n        int count = 0;\n        int candidate = -1;\n\n        for (auto&amp; num : nums)\n        {\n            if (candidate == num)\n            {\n                count++;\n            }\n            else\n            {\n                if (--count &lt; 0)\n                {\n                    candidate = num;\n                    count = 1;\n                }\n\n            }\n        }\n\n        return candidate;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1anums = [3,2,3]\n\u8f93\u51fa\uff1a3\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1anums = [2,2,1,1,1,2,2]\n\u8f93\u51fa\uff1a2\n<\/code><\/pre>\n<h2 id=\"\u6570\u7ec4\u7ffb\u8f6c\">\u6570\u7ec4\u7ffb\u8f6c<\/h2>\n<h3 id=\"\u8f6e\u8f6c\u6570\u7ec4\">\u8f6e\u8f6c\u6570\u7ec4<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-56\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code>\uff0c\u5c06\u6570\u7ec4\u4e2d\u7684\u5143\u7d20\u5411\u53f3\u8f6e\u8f6c <code>k<\/code> \u4e2a\u4f4d\u7f6e\uff0c\u5176\u4e2d <code>k<\/code> \u662f\u975e\u8d1f\u6570\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-37\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8be5\u65b9\u6cd5\u57fa\u4e8e\u5982\u4e0b\u7684\u4e8b\u5b9e\uff1a\u5f53\u6211\u4eec\u5c06\u6570\u7ec4\u7684\u5143\u7d20\u5411\u53f3\u79fb\u52a8 <code>k<\/code> \u6b21\u540e\uff0c\u5c3e\u90e8 <code>k\u200amod\u200an<\/code>\u4e2a\u5143\u7d20\u4f1a\u79fb\u52a8\u81f3\u6570\u7ec4\u5934\u90e8\uff0c\u5176\u4f59\u5143\u7d20\u5411\u540e\u79fb\u52a8 <code>k\u200amod\u200an<\/code>\u4e2a\u4f4d\u7f6e\u3002<\/p>\n<p>\u8be5\u65b9\u6cd5\u4e3a\u6570\u7ec4\u7684\u7ffb\u8f6c\uff1a\u6211\u4eec\u53ef\u4ee5\u5148\u5c06\u6240\u6709\u5143\u7d20\u7ffb\u8f6c\uff0c\u8fd9\u6837\u5c3e\u90e8\u7684 k\u200amod\u200ank\\bmod nkmodn \u4e2a\u5143\u7d20\u5c31\u88ab\u79fb\u81f3\u6570\u7ec4\u5934\u90e8\uff0c\u7136\u540e\u6211\u4eec\u518d\u7ffb\u8f6c <code>0,kmodn\u22121<\/code> \u533a\u95f4\u7684\u5143\u7d20\u548c<code>kmodn,n\u22121<\/code>\u533a\u95f4\u7684\u5143\u7d20\u5373\u80fd\u5f97\u5230\u6700\u540e\u7684\u7b54\u6848\u3002<\/p>\n<p>\u6211\u4eec\u4ee5 <code>n=7\uff0ck=3<\/code>\u4e3a\u4f8b\u8fdb\u884c\u5982\u4e0b\u5c55\u793a\uff1a<\/p>\n<figure class=\"table-figure\">\n<table>\n<thead>\n<tr>\n<th>\u64cd\u4f5c<\/th>\n<th>\u7ed3\u679c<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u539f\u59cb\u6570\u7ec4<\/td>\n<td>1 2 3 4 5 6 7<\/td>\n<\/tr>\n<tr>\n<td>\u7ffb\u8f6c\u6240\u6709\u5143\u7d20<\/td>\n<td>7 6 5 4 3 2 1<\/td>\n<\/tr>\n<tr>\n<td>\u7ffb\u8f6c0,kmodn-1\u533a\u95f4\u7684\u5143\u7d20\uff08\u5047\u8bbek=3\uff09<\/td>\n<td>5 6 7 4 3 2 1<\/td>\n<\/tr>\n<tr>\n<td>\u7ffb\u8f6ckmodn,n-1\u533a\u95f4\u7684\u5143\u7d20\uff08\u5047\u8bbek=3\uff09<\/td>\n<td>5 6 7 1 2 3 4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-57\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    void reverse(vector&lt;int&gt;&amp; nums, int start, int end) {\n        while (start &lt; end) {\n            swap(nums[start], nums[end]);\n            start += 1;\n            end -= 1;\n        }\n    }\n\n    void rotate(vector&lt;int&gt;&amp; nums, int k) {\n        k %= nums.size();\n        reverse(nums, 0, nums.size() - 1);\n        reverse(nums, 0, k - 1);\n        reverse(nums, k, nums.size() - 1);\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165: nums = [1,2,3,4,5,6,7], k = 3\n\u8f93\u51fa: [5,6,7,1,2,3,4]\n\u89e3\u91ca:\n\u5411\u53f3\u8f6e\u8f6c 1 \u6b65: [7,1,2,3,4,5,6]\n\u5411\u53f3\u8f6e\u8f6c 2 \u6b65: [6,7,1,2,3,4,5]\n\u5411\u53f3\u8f6e\u8f6c 3 \u6b65: [5,6,7,1,2,3,4]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1anums = [-1,-100,3,99], k = 2\n\u8f93\u51fa\uff1a[3,99,-1,-100]\n\u89e3\u91ca: \n\u5411\u53f3\u8f6e\u8f6c 1 \u6b65: [99,-1,-100,3]\n\u5411\u53f3\u8f6e\u8f6c 2 \u6b65: [3,99,-1,-100]\n<\/code><\/pre>\n<h2 id=\"\u52a8\u6001\u89c4\u5212\">\u52a8\u6001\u89c4\u5212<\/h2>\n<h3 id=\"\u4e70\u5356\u80a1\u7968\u7684\u6700\u4f73\u65f6\u673a\">\u4e70\u5356\u80a1\u7968\u7684\u6700\u4f73\u65f6\u673a<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-57\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u6570\u7ec4 <code>prices<\/code> \uff0c\u5b83\u7684\u7b2c <code>i<\/code> \u4e2a\u5143\u7d20 <code>prices[i]<\/code> \u8868\u793a\u4e00\u652f\u7ed9\u5b9a\u80a1\u7968\u7b2c <code>i<\/code> \u5929\u7684\u4ef7\u683c\u3002<\/p>\n<p>\u4f60\u53ea\u80fd\u9009\u62e9 <strong>\u67d0\u4e00\u5929<\/strong> \u4e70\u5165\u8fd9\u53ea\u80a1\u7968\uff0c\u5e76\u9009\u62e9\u5728 <strong>\u672a\u6765\u7684\u67d0\u4e00\u4e2a\u4e0d\u540c\u7684\u65e5\u5b50<\/strong> \u5356\u51fa\u8be5\u80a1\u7968\u3002\u8bbe\u8ba1\u4e00\u4e2a\u7b97\u6cd5\u6765\u8ba1\u7b97\u4f60\u6240\u80fd\u83b7\u53d6\u7684\u6700\u5927\u5229\u6da6\u3002<\/p>\n<p>\u8fd4\u56de\u4f60\u53ef\u4ee5\u4ece\u8fd9\u7b14\u4ea4\u6613\u4e2d\u83b7\u53d6\u7684\u6700\u5927\u5229\u6da6\u3002\u5982\u679c\u4f60\u4e0d\u80fd\u83b7\u53d6\u4efb\u4f55\u5229\u6da6\uff0c\u8fd4\u56de <code>0<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-38\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6211\u4eec\u53ea\u9700\u8981\u904d\u5386\u4ef7\u683c\u6570\u7ec4\u4e00\u904d\uff0c\u8bb0\u5f55\u5386\u53f2\u6700\u4f4e\u70b9\uff0c\u7136\u540e\u5728\u6bcf\u4e00\u5929\u8003\u8651\u8fd9\u4e48\u4e00\u4e2a\u95ee\u9898\uff1a\u5982\u679c\u6211\u662f\u5728\u5386\u53f2\u6700\u4f4e\u70b9\u4e70\u8fdb\u7684\uff0c\u90a3\u4e48\u6211\u4eca\u5929\u5356\u51fa\u80fd\u8d5a\u591a\u5c11\u94b1\uff1f\u5f53\u8003\u8651\u5b8c\u6240\u6709\u5929\u6570\u4e4b\u65f6\uff0c\u6211\u4eec\u5c31\u5f97\u5230\u4e86\u6700\u597d\u7684\u7b54\u6848\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-58\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    int maxProfit(vector&lt;int&gt;&amp; prices) {\n        int minprice = 1e9;\n        int maxprofit = 0;\n\n        for (auto&amp; price : prices)\n        {\n            maxprofit = max(maxprofit, price - minprice);\n            minprice = min(minprice, price);\n        }\n\n        if (maxprofit &gt; 0)\n            return maxprofit;\n        else\n            return 0;\n    }\n\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1a[7,1,5,3,6,4]\n\u8f93\u51fa\uff1a5\n\u89e3\u91ca\uff1a\u5728\u7b2c 2 \u5929\uff08\u80a1\u7968\u4ef7\u683c = 1\uff09\u7684\u65f6\u5019\u4e70\u5165\uff0c\u5728\u7b2c 5 \u5929\uff08\u80a1\u7968\u4ef7\u683c = 6\uff09\u7684\u65f6\u5019\u5356\u51fa\uff0c\u6700\u5927\u5229\u6da6 = 6-1 = 5 \u3002\n     \u6ce8\u610f\u5229\u6da6\u4e0d\u80fd\u662f 7-1 = 6, \u56e0\u4e3a\u5356\u51fa\u4ef7\u683c\u9700\u8981\u5927\u4e8e\u4e70\u5165\u4ef7\u683c\uff1b\u540c\u65f6\uff0c\u4f60\u4e0d\u80fd\u5728\u4e70\u5165\u524d\u5356\u51fa\u80a1\u7968\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1aprices = [7,6,4,3,1]\n\u8f93\u51fa\uff1a0\n\u89e3\u91ca\uff1a\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b, \u6ca1\u6709\u4ea4\u6613\u5b8c\u6210, \u6240\u4ee5\u6700\u5927\u5229\u6da6\u4e3a 0\u3002\n<\/code><\/pre>\n<h3 id=\"\u63a5\u96e8\u6c34-2\">\u63a5\u96e8\u6c34<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-58\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a <code>n<\/code> \u4e2a\u975e\u8d1f\u6574\u6570\u8868\u793a\u6bcf\u4e2a\u5bbd\u5ea6\u4e3a <code>1<\/code> \u7684\u67f1\u5b50\u7684\u9ad8\u5ea6\u56fe\uff0c\u8ba1\u7b97\u6309\u6b64\u6392\u5217\u7684\u67f1\u5b50\uff0c\u4e0b\u96e8\u4e4b\u540e\u80fd\u63a5\u591a\u5c11\u96e8\u6c34\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-39\">\u9898\u76ee\u5206\u6790<\/h4>\n<ol start=\"\">\n<li><strong>\u521d\u59cb\u5316<\/strong>\uff1a<\/li>\n<\/ol>\n<pre><code class=\"language-cpp\" lang=\"cpp\">* `size`\u662f`height`\u6570\u7ec4\u7684\u5927\u5c0f\u3002\n* \u5982\u679c`size`\u4e3a0\uff0c\u5219\u76f4\u63a5\u8fd4\u56de0\uff0c\u56e0\u4e3a\u6ca1\u6709\u67f1\u5b50\u53ef\u4ee5\u63a5\u96e8\u6c34\u3002\n<\/code><\/pre>\n<ol start=\"2\">\n<li><strong>\u8ba1\u7b97\u5de6\u4fa7\u6700\u5927\u9ad8\u5ea6<\/strong>\uff1a<\/li>\n<\/ol>\n<pre><code class=\"language-cpp\" lang=\"cpp\">* \u4f7f\u7528\u4e00\u4e2a`leftmax`\u6570\u7ec4\u6765\u5b58\u50a8\u6bcf\u4e2a\u4f4d\u7f6e\u5de6\u4fa7\u7684\u6700\u5927\u9ad8\u5ea6\u3002\n* `leftmax[0]`\u81ea\u7136\u662f`height[0]`\uff0c\u56e0\u4e3a\u7b2c\u4e00\u4e2a\u67f1\u5b50\u5de6\u4fa7\u6ca1\u6709\u67f1\u5b50\u3002\n* \u4ece`i = 1`\u5f00\u59cb\u904d\u5386\uff0c`leftmax[i]`\u662f`leftmax[i-1]`\u548c`height[i]`\u4e2d\u7684\u8f83\u5927\u503c\u3002\n<\/code><\/pre>\n<ol start=\"3\">\n<li><strong>\u8ba1\u7b97\u53f3\u4fa7\u6700\u5927\u9ad8\u5ea6<\/strong>\uff1a<\/li>\n<\/ol>\n<pre><code class=\"language-cpp\" lang=\"cpp\">* \u4f7f\u7528\u4e00\u4e2a`rightmax`\u6570\u7ec4\u6765\u5b58\u50a8\u6bcf\u4e2a\u4f4d\u7f6e\u53f3\u4fa7\u7684\u6700\u5927\u9ad8\u5ea6\u3002\n* `rightmax[size-1]`\u81ea\u7136\u662f`height[size-1]`\uff0c\u56e0\u4e3a\u6700\u540e\u4e00\u4e2a\u67f1\u5b50\u53f3\u4fa7\u6ca1\u6709\u67f1\u5b50\u3002\n* \u4ece`i = size-2`\u5f00\u59cb\u53cd\u5411\u904d\u5386\uff0c`rightmax[i]`\u662f`rightmax[i+1]`\u548c`height[i]`\u4e2d\u7684\u8f83\u5927\u503c\u3002\n<\/code><\/pre>\n<ol start=\"4\">\n<li><strong>\u8ba1\u7b97\u63a5\u5230\u7684\u96e8\u6c34<\/strong>\uff1a<\/li>\n<\/ol>\n<pre><code class=\"language-cpp\" lang=\"cpp\">* \u904d\u5386`height`\u6570\u7ec4\uff0c\u5bf9\u4e8e\u6bcf\u4e2a\u4f4d\u7f6e`i`\uff0c\u53ef\u4ee5\u63a5\u5230\u7684\u96e8\u6c34\u662f`min(leftmax[i], rightmax[i]) - height[i]`\u3002\n* \u8fd9\u662f\u56e0\u4e3a\u96e8\u6c34\u7684\u9ad8\u5ea6\u53d6\u51b3\u4e8e\u5de6\u4fa7\u548c\u53f3\u4fa7\u7684\u6700\u5927\u9ad8\u5ea6\u4e2d\u7684\u8f83\u5c0f\u503c\uff0c\u4f46\u4e0d\u5f97\u8d85\u8fc7\u8be5\u4f4d\u7f6e\u7684\u5b9e\u9645\u9ad8\u5ea6\u3002\n* \u5c06\u6240\u6709\u4f4d\u7f6e\u53ef\u4ee5\u63a5\u5230\u7684\u96e8\u6c34\u52a0\u8d77\u6765\uff0c\u5f97\u5230\u6700\u7ec8\u7b54\u6848\u3002\n<\/code><\/pre>\n<p>\u800c\u5355\u8c03\u6808\u7684\u505a\u6cd5\u662f\u5b58\u50a8\u4e0b\u6807<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-59\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    int trap(vector&lt;int&gt;&amp; height) {\n        int size = height.size();\n        if (size == 0)\n            return 0;\n\n        vector&lt;int&gt; leftmax(size);\n        leftmax[0] = height[0];\n        for (int i = 1; i &lt; size; i++)\n        {\n            leftmax[i] = max(leftmax[i - 1], height[i]);\n        }\n\n        vector&lt;int&gt; rightmax(size);\n        rightmax[size - 1] = height[size - 1];\n        for (int i = size - 2; i &gt;= 0; i--)\n        {\n            rightmax[i] = max(rightmax[i + 1], height[i]);\n        }\n\n        int ans = 0;\n        for (int i = 0; i &lt; size; i++)\n        {\n            ans += min(leftmax[i], rightmax[i]) - height[i];\n\n        }\n\n        return ans;\n\n\n    }\n};\n\nclass Solution {\npublic:\n    int trap(vector&lt;int&gt;&amp; height) {\n        int n = height.size();\n        stack&lt;int&gt; stk;\n\n        int ans = 0;\n\n        for (int right = 0; right &lt; n; right++)\n        {\n            \n\n            while (!stk.empty() &amp;&amp; height[right] &gt;= height[stk.top()])\n            {\n                int top = stk.top();\n                stk.pop();\n\n\n                if (stk.empty()) break;\n                \n                int left = stk.top();\n                int currentwidth = right - left - 1;\n                int currentheight = min(height[right], height[left]) - height[top];\n\n                ans += currentheight * currentwidth;\n            }\n\n\n\n\n            stk.push(right);\n        }\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2018\/10\/22\/rainwatertrap.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2018\/10\/22\/rainwatertrap.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aheight = [0,1,0,2,1,0,1,3,2,1,2,1]\n\u8f93\u51fa\uff1a6\n\u89e3\u91ca\uff1a\u4e0a\u9762\u662f\u7531\u6570\u7ec4 [0,1,0,2,1,0,1,3,2,1,2,1] \u8868\u793a\u7684\u9ad8\u5ea6\u56fe\uff0c\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u53ef\u4ee5\u63a5 6 \u4e2a\u5355\u4f4d\u7684\u96e8\u6c34\uff08\u84dd\u8272\u90e8\u5206\u8868\u793a\u96e8\u6c34\uff09\u3002 \n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aheight = [4,2,0,3,2,5]\n\u8f93\u51fa\uff1a9\n<\/code><\/pre>\n<h3 id=\"\u5224\u65ad\u5b50\u5e8f\u5217-2\">\u5224\u65ad\u5b50\u5e8f\u5217<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-59\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u5b57\u7b26\u4e32 <strong>s<\/strong> \u548c <strong>t<\/strong> \uff0c\u5224\u65ad <strong>s<\/strong> \u662f\u5426\u4e3a <strong>t<\/strong> \u7684\u5b50\u5e8f\u5217\u3002<\/p>\n<p>\u5b57\u7b26\u4e32\u7684\u4e00\u4e2a\u5b50\u5e8f\u5217\u662f\u539f\u59cb\u5b57\u7b26\u4e32\u5220\u9664\u4e00\u4e9b\uff08\u4e5f\u53ef\u4ee5\u4e0d\u5220\u9664\uff09\u5b57\u7b26\u800c\u4e0d\u6539\u53d8\u5269\u4f59\u5b57\u7b26\u76f8\u5bf9\u4f4d\u7f6e\u5f62\u6210\u7684\u65b0\u5b57\u7b26\u4e32\u3002\uff08\u4f8b\u5982\uff0c<code>\"ace\"<\/code>\u662f<code>\"abcde\"<\/code>\u7684\u4e00\u4e2a\u5b50\u5e8f\u5217\uff0c\u800c<code>\"aec\"<\/code>\u4e0d\u662f\uff09\u3002<\/p>\n<p><strong>\u8fdb\u9636\uff1a<\/strong><\/p>\n<p>\u5982\u679c\u6709\u5927\u91cf\u8f93\u5165\u7684 S\uff0c\u79f0\u4f5c S1, S2, &#8230; , Sk \u5176\u4e2d k &gt;= 10\u4ebf\uff0c\u4f60\u9700\u8981\u4f9d\u6b21\u68c0\u67e5\u5b83\u4eec\u662f\u5426\u4e3a T \u7684\u5b50\u5e8f\u5217\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u4f60\u4f1a\u600e\u6837\u6539\u53d8\u4ee3\u7801\uff1f<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-40\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8fd9\u91cc\u9700\u8981\u7684\u6570\u636e\u5c31\u662f\u5339\u914d\u5230\u67d0\u4e00\u70b9\u65f6 \u5f85\u5339\u914d\u7684\u5b57\u7b26\u5728\u957f\u5b57\u7b26\u4e32\u4e2d \u4e0b\u4e00\u6b21 \u51fa\u73b0\u7684\u4f4d\u7f6e\u3002<\/p>\n<p>\u6240\u4ee5\u6211\u4eec\u524d\u671f\u591a\u505a\u4e00\u70b9\u5de5\u4f5c\uff0c\u5c06\u957f\u5b57\u7b26\u4e32\u7814\u7a76\u900f\u5f7b\uff0c\u5047\u5982\u957f\u5b57\u7b26\u4e32\u7684\u957f\u5ea6\u4e3a <code>n<\/code>\uff0c\u5efa\u7acb\u4e00\u4e2a <code>n\u221726<\/code>\u5927\u5c0f\u7684\u77e9\u9635\uff0c\u8868\u793a\u6bcf\u4e2a\u4f4d\u7f6e\u4e0a<code>26<\/code>\u4e2a\u5b57\u7b26\u4e0b\u4e00\u6b21\u51fa\u73b0\u7684\u4f4d\u7f6e\u3002<\/p>\n<p>\u5bf9\u4e8e\u8981\u5339\u914d\u7684\u77ed\u5b57\u7b26\u4e32\uff0c\u904d\u5386\u6bcf\u4e00\u4e2a\u5b57\u7b26\uff0c\u4e0d\u65ad\u5730\u5bfb\u627e\u8be5\u5b57\u7b26\u5728\u957f\u5b57\u7b26\u4e32\u4e2d\u7684\u4f4d\u7f6e\uff0c\u7136\u540e\u5c06\u4f4d\u7f6e\u66f4\u65b0\uff0c\u5bfb\u627e\u4e0b\u4e00\u4e2a\u5b57\u7b26\uff0c\u76f8\u5f53\u4e8e\u5728\u957f\u5b57\u7b26\u4e32\u4e0a\u201c\u8df3\u8dc3\u201d\u3002<\/p>\n<p>\u5982\u679c\u4e0b\u4e00\u4e2a\u4f4d\u7f6e\u4e3a <code>-1<\/code>\uff0c\u8868\u793a\u957f\u5b57\u7b26\u4e32\u518d\u6ca1\u6709\u8be5\u5b57\u7b26\u4e86\uff0c\u8fd4\u56de false \u5373\u53ef\u3002<\/p>\n<p>\u5982\u679c\u80fd\u6b63\u5e38\u904d\u5386\u5b8c\u6bd5\uff0c\u5219\u8868\u793a\u53ef\u884c\uff0c\u8fd4\u56de <code>true<\/code><\/p>\n<p>\u5bf9\u4e8e <code>\"abc\"<\/code> \u5728 &#8220;ahbgdc&#8221; \u4e0a\u5339\u914d\u7684\u65f6\u5019\uff0c\u7531\u4e8e\u957f\u5b57\u7b26\u4e32\u7b2c\u4e00\u4e2a a \u7684\u4e0b\u4e00\u4e2a\u51fa\u73b0 a \u7684\u4f4d\u7f6e\u4e3a -1\uff08\u4e0d\u51fa\u73b0\uff09\uff0c\u4f1a\u5bfc\u81f4\u4e00\u4e2a bug\u3002<\/p>\n<p>\u6240\u4ee5\u5728\u751f\u6210\u6570\u7ec4\u65f6\u5728\u957f\u5b57\u7b26\u4e32\u524d\u63d2\u5165\u4e00\u4e2a\u7a7a\u5b57\u7b26\u5373\u53ef\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-60\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\/\/\u52a8\u6001\u89c4\u5212\nclass Solution {\npublic:\n    bool isSubsequence(string s, string t) {\n        t.insert(t.begin(), ' ');\n        int len1 = s.size();\n        int len2 = t.size();\n\n        vector&lt;vector&lt;int&gt;&gt; dp(len2, vector&lt;int&gt;(26, 0));\n\n        for (char ch = 'a'; ch &lt;= 'z'; ch++)\n        {\n            int nextPos = -1; \/\/\u8868\u793a\u63a5\u4e0b\u6765\u4e0d\u4f1a\u51fa\u73b0\u8be5\u5b57\u7b26\n\n            for (int i = len2 - 1; i &gt;= 0; i--)\n            {\n                dp[i][ch - 'a'] = nextPos;\n                if (t[i] == ch)\n                    nextPos = i;\n            }\n        }\n\n        int index = 0;\n        for (char c : s)\n        {\n            index = dp[index][c - 'a'];\n            if (index == -1)\n                return false;\n        }\n\n        return true;\n    }\n\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"abc\", t = \"ahbgdc\"\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"axc\", t = \"ahbgdc\"\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<h2 id=\"\u6570\u636e\u7ed3\u6784\u5e94\u7528\u9898\">\u6570\u636e\u7ed3\u6784\u5e94\u7528\u9898<\/h2>\n<h3 id=\"o1-\u65f6\u95f4\u63d2\u5165\u5220\u9664\u548c\u83b7\u53d6\u968f\u673a\u5143\u7d20\">O(1) \u65f6\u95f4\u63d2\u5165\u3001\u5220\u9664\u548c\u83b7\u53d6\u968f\u673a\u5143\u7d20<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-60\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u5b9e\u73b0<code>RandomizedSet<\/code> \u7c7b\uff1a<\/p>\n<ul>\n<li><code>RandomizedSet()<\/code> \u521d\u59cb\u5316 <code>RandomizedSet<\/code> \u5bf9\u8c61<\/li>\n<li><code>bool insert(int val)<\/code> \u5f53\u5143\u7d20 <code>val<\/code> \u4e0d\u5b58\u5728\u65f6\uff0c\u5411\u96c6\u5408\u4e2d\u63d2\u5165\u8be5\u9879\uff0c\u5e76\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/li>\n<li><code>bool remove(int val)<\/code> \u5f53\u5143\u7d20 <code>val<\/code> \u5b58\u5728\u65f6\uff0c\u4ece\u96c6\u5408\u4e2d\u79fb\u9664\u8be5\u9879\uff0c\u5e76\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/li>\n<li><code>int getRandom()<\/code> \u968f\u673a\u8fd4\u56de\u73b0\u6709\u96c6\u5408\u4e2d\u7684\u4e00\u9879\uff08\u6d4b\u8bd5\u7528\u4f8b\u4fdd\u8bc1\u8c03\u7528\u6b64\u65b9\u6cd5\u65f6\u96c6\u5408\u4e2d\u81f3\u5c11\u5b58\u5728\u4e00\u4e2a\u5143\u7d20\uff09\u3002\u6bcf\u4e2a\u5143\u7d20\u5e94\u8be5\u6709 <strong>\u76f8\u540c\u7684\u6982\u7387<\/strong> \u88ab\u8fd4\u56de\u3002<\/li>\n<\/ul>\n<p>\u4f60\u5fc5\u987b\u5b9e\u73b0\u7c7b\u7684\u6240\u6709\u51fd\u6570\uff0c\u5e76\u6ee1\u8db3\u6bcf\u4e2a\u51fd\u6570\u7684 <strong>\u5e73\u5747<\/strong> \u65f6\u95f4\u590d\u6742\u5ea6\u4e3a <code>O(1)<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-41\">\u9898\u76ee\u5206\u6790<\/h4>\n<ol start=\"\">\n<li><strong>\u6784\u9020\u51fd\u6570\uff08RandomizedSet\uff09<\/strong>\uff1a<\/li>\n<\/ol>\n<pre><code class=\"language-cpp\" lang=\"cpp\">* `srand((unsigned)time(NULL));`\uff1a\u8fd9\u662fC++\u4e2d\u8bbe\u7f6e\u968f\u673a\u6570\u79cd\u5b50\u7684\u5e38\u7528\u65b9\u6cd5\u3002\u5b83\u4f7f\u7528\u5f53\u524d\u65f6\u95f4\uff08\u4ee5\u79d2\u4e3a\u5355\u4f4d\uff09\u4f5c\u4e3a\u79cd\u5b50\uff0c\u4f7f\u5f97\u6bcf\u6b21\u7a0b\u5e8f\u8fd0\u884c\u65f6\u751f\u6210\u7684\u968f\u673a\u6570\u5e8f\u5217\u90fd\u662f\u4e0d\u540c\u7684\u3002\n<\/code><\/pre>\n<ol start=\"2\">\n<li><strong>\u63d2\u5165\u64cd\u4f5c\uff08insert\uff09<\/strong>\uff1a<\/li>\n<\/ol>\n<pre><code class=\"language-cpp\" lang=\"cpp\">* `if (indices.count(val)) { return false; }`\uff1a\u68c0\u67e5\u503c`val`\u662f\u5426\u5df2\u7ecf\u5728\u96c6\u5408\u4e2d\uff08\u901a\u8fc7\u68c0\u67e5\u5b83\u662f\u5426\u5b58\u5728\u4e8e`indices`\u8fd9\u4e2a\u54c8\u5e0c\u8868\u4e2d\uff09\u3002\u5982\u679c\u5b58\u5728\uff0c\u8fd4\u56de`false`\u8868\u793a\u63d2\u5165\u5931\u8d25\u3002\n* `int index = nums.size();`\uff1a\u83b7\u53d6\u5f53\u524d`nums`\u6570\u7ec4\u7684\u5927\u5c0f\uff08\u4e5f\u5c31\u662f\u4e0b\u4e00\u4e2a\u8981\u63d2\u5165\u7684\u4f4d\u7f6e\u7684\u7d22\u5f15\uff09\u3002\n* `nums.emplace_back(val);`\uff1a\u5728`nums`\u6570\u7ec4\u7684\u672b\u5c3e\u63d2\u5165\u503c`val`\u3002\n* `indices[val] = index;`\uff1a\u5728`indices`\u54c8\u5e0c\u8868\u4e2d\u4e3a\u503c`val`\u8bb0\u5f55\u5176\u7d22\u5f15\u3002\n* \u8fd4\u56de`true`\u8868\u793a\u63d2\u5165\u6210\u529f\u3002\n<\/code><\/pre>\n<ol start=\"3\">\n<li><strong>\u5220\u9664\u64cd\u4f5c\uff08remove\uff09<\/strong>\uff1a<\/li>\n<\/ol>\n<pre><code class=\"language-cpp\" lang=\"cpp\">* `if (!indices.count(val)) { return false; }`\uff1a\u68c0\u67e5\u503c`val`\u662f\u5426\u5b58\u5728\u4e8e\u96c6\u5408\u4e2d\u3002\u5982\u679c\u4e0d\u5b58\u5728\uff0c\u8fd4\u56de`false`\u8868\u793a\u5220\u9664\u5931\u8d25\u3002\n* `int index = indices[val];`\uff1a\u83b7\u53d6\u503c`val`\u5728`nums`\u6570\u7ec4\u4e2d\u7684\u7d22\u5f15\u3002\n* `int last = nums.back();`\uff1a\u83b7\u53d6`nums`\u6570\u7ec4\u7684\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u7684\u503c\u3002\n* `nums[index] = last;`\uff1a\u5c06`nums`\u6570\u7ec4\u7684\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u7684\u503c\u590d\u5236\u5230\u8981\u5220\u9664\u7684\u5143\u7d20\u7684\u4f4d\u7f6e\uff08\u5373`val`\u7684\u4f4d\u7f6e\uff09\u3002\n* `indices[last] = index;`\uff1a\u66f4\u65b0`indices`\u54c8\u5e0c\u8868\uff0c\u5c06\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u7684\u503c`last`\u7684\u7d22\u5f15\u66f4\u65b0\u4e3a\u4e4b\u524d`val`\u7684\u7d22\u5f15\u3002\n* `nums.pop_back();`\uff1a\u4ece`nums`\u6570\u7ec4\u4e2d\u5220\u9664\u6700\u540e\u4e00\u4e2a\u5143\u7d20\uff08\u73b0\u5728\u5b83\u7684\u503c\u5df2\u7ecf\u88ab\u590d\u5236\u5230`val`\u7684\u4f4d\u7f6e\u4e86\uff09\u3002\n* `indices.erase(val);`\uff1a\u4ece`indices`\u54c8\u5e0c\u8868\u4e2d\u5220\u9664\u503c`val`\u7684\u7d22\u5f15\u3002\n* \u8fd4\u56de`true`\u8868\u793a\u5220\u9664\u6210\u529f\u3002\n<\/code><\/pre>\n<ol start=\"4\">\n<li><strong>\u968f\u673a\u9009\u62e9\u64cd\u4f5c\uff08getRandom\uff09<\/strong>\uff1a<\/li>\n<\/ol>\n<pre><code class=\"language-cpp\" lang=\"cpp\">* `int randomIndex = rand()%nums.size();`\uff1a\u751f\u6210\u4e00\u4e2a\u4ecb\u4e8e0\uff08\u5305\u542b\uff09\u548c`nums.size()`\uff08\u4e0d\u5305\u542b\uff09\u4e4b\u95f4\u7684\u968f\u673a\u7d22\u5f15\u3002\n* `return nums[randomIndex];`\uff1a\u8fd4\u56de`nums`\u6570\u7ec4\u4e2d\u5bf9\u5e94\u968f\u673a\u7d22\u5f15\u7684\u5143\u7d20\u503c\u3002\n<\/code><\/pre>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-61\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n\nusing namespace std;\n\nclass RandomizedSet {\npublic:\n    RandomizedSet() {\n        srand((unsigned)time(NULL));\n\n    }\n\n    bool insert(int val) {\n        if (indices.count(val))\n            return false;\n\n        int index = nums.size();\n        nums.emplace_back(val);\n        indices[val] = index;\n        return true;\n    }\n\n    bool remove(int val) {\n        if (!indices.count(val))\n            return false;\n\n        int index = indices[val];\n        int last = nums.back();\n\n        nums[index] = last;\n        indices[last] = index;\n\n        nums.pop_back();\n        indices.erase(val);\n\n        return true;\n\n    }\n\n    int getRandom() {\n        int randomIndex = rand() % nums.size();\n        return nums[randomIndex];\n    }\n\nprivate:\n    vector&lt;int&gt; nums;\n    unordered_map&lt;int, int&gt; indices;\n};\n\n\/**\n * Your RandomizedSet object will be instantiated and called as such:\n * RandomizedSet* obj = new RandomizedSet();\n * bool param_1 = obj-&gt;insert(val);\n * bool param_2 = obj-&gt;remove(val);\n * int param_3 = obj-&gt;getRandom();\n *\/\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\n[\"RandomizedSet\", \"insert\", \"remove\", \"insert\", \"getRandom\", \"remove\", \"insert\", \"getRandom\"]\n[[], [1], [2], [2], [], [1], [2], []]\n\u8f93\u51fa\n[null, true, false, true, 2, true, false, 2]\n\n\u89e3\u91ca\nRandomizedSet randomizedSet = new RandomizedSet();\nrandomizedSet.insert(1); \/\/ \u5411\u96c6\u5408\u4e2d\u63d2\u5165 1 \u3002\u8fd4\u56de true \u8868\u793a 1 \u88ab\u6210\u529f\u5730\u63d2\u5165\u3002\nrandomizedSet.remove(2); \/\/ \u8fd4\u56de false \uff0c\u8868\u793a\u96c6\u5408\u4e2d\u4e0d\u5b58\u5728 2 \u3002\nrandomizedSet.insert(2); \/\/ \u5411\u96c6\u5408\u4e2d\u63d2\u5165 2 \u3002\u8fd4\u56de true \u3002\u96c6\u5408\u73b0\u5728\u5305\u542b [1,2] \u3002\nrandomizedSet.getRandom(); \/\/ getRandom \u5e94\u968f\u673a\u8fd4\u56de 1 \u6216 2 \u3002\nrandomizedSet.remove(1); \/\/ \u4ece\u96c6\u5408\u4e2d\u79fb\u9664 1 \uff0c\u8fd4\u56de true \u3002\u96c6\u5408\u73b0\u5728\u5305\u542b [2] \u3002\nrandomizedSet.insert(2); \/\/ 2 \u5df2\u5728\u96c6\u5408\u4e2d\uff0c\u6240\u4ee5\u8fd4\u56de false \u3002\nrandomizedSet.getRandom(); \/\/ \u7531\u4e8e 2 \u662f\u96c6\u5408\u4e2d\u552f\u4e00\u7684\u6570\u5b57\uff0cgetRandom \u603b\u662f\u8fd4\u56de 2 \n<\/code><\/pre>\n<h3 id=\"lru\u7f13\u5b58\">LRU\u7f13\u5b58<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-61\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u8bf7\u4f60\u8bbe\u8ba1\u5e76\u5b9e\u73b0\u4e00\u4e2a\u6ee1\u8db3 <a href=\"https:\/\/baike.baidu.com\/item\/LRU\">LRU (\u6700\u8fd1\u6700\u5c11\u4f7f\u7528) \u7f13\u5b58<\/a> \u7ea6\u675f\u7684\u6570\u636e\u7ed3\u6784\u3002<\/p>\n<p>\u5b9e\u73b0 <code>LRUCache<\/code> \u7c7b\uff1a<\/p>\n<ul>\n<li><code>LRUCache(int capacity)<\/code> \u4ee5 <strong>\u6b63\u6574\u6570<\/strong> \u4f5c\u4e3a\u5bb9\u91cf <code>capacity<\/code> \u521d\u59cb\u5316 LRU \u7f13\u5b58<\/li>\n<li><code>int get(int key)<\/code> \u5982\u679c\u5173\u952e\u5b57 <code>key<\/code> \u5b58\u5728\u4e8e\u7f13\u5b58\u4e2d\uff0c\u5219\u8fd4\u56de\u5173\u952e\u5b57\u7684\u503c\uff0c\u5426\u5219\u8fd4\u56de <code>-1<\/code> \u3002<\/li>\n<li><code>void put(int key, int value)<\/code> \u5982\u679c\u5173\u952e\u5b57 <code>key<\/code> \u5df2\u7ecf\u5b58\u5728\uff0c\u5219\u53d8\u66f4\u5176\u6570\u636e\u503c <code>value<\/code> \uff1b\u5982\u679c\u4e0d\u5b58\u5728\uff0c\u5219\u5411\u7f13\u5b58\u4e2d\u63d2\u5165\u8be5\u7ec4 <code>key-value<\/code> \u3002\u5982\u679c\u63d2\u5165\u64cd\u4f5c\u5bfc\u81f4\u5173\u952e\u5b57\u6570\u91cf\u8d85\u8fc7 <code>capacity<\/code> \uff0c\u5219\u5e94\u8be5 <strong>\u9010\u51fa<\/strong> \u6700\u4e45\u672a\u4f7f\u7528\u7684\u5173\u952e\u5b57\u3002<\/li>\n<\/ul>\n<p>\u51fd\u6570 <code>get<\/code> \u548c <code>put<\/code> \u5fc5\u987b\u4ee5 <code>O(1)<\/code> \u7684\u5e73\u5747\u65f6\u95f4\u590d\u6742\u5ea6\u8fd0\u884c\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-42\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u9996\u5148\u6211\u4eec\u8981\u7ef4\u62a4\u4e00\u4e2a\u54c8\u5e0c\u8868\u548c\u4e00\u4e2a\u53cc\u5411\u94fe\u8868\uff0c\u54c8\u5e0c\u8868\u4e2d\u5b58\u653e<strong>\u503c\u4e0e\u7ed3\u6784\u4f53\u6307\u9488<\/strong>\uff0c\u7136\u540e\u6211\u4eec\u4f7f\u7528\u5934\u63d2\u6cd5\u53bb\u63d2\u5165\u672a\u5b58\u50a8\u7684\u952e\u503c\uff0c\u5982\u679c\u63d2\u5165\u7684\u503c\u5927\u4e8e\u5bb9\u91cf\uff0c\u5219\u79fb\u9664\u5c3e\u8282\u70b9\u7684\u503c\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-62\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n\nusing namespace std;\n\n\nstruct DLinkedNode\n{\n    int key, value;\n    DLinkedNode* prev;\n    DLinkedNode* next;\n\n    DLinkedNode() : key(0), value(0), prev(nullptr), next(nullptr) {}\n    DLinkedNode(int _key, int _value) :key(_key), value(_value), prev(nullptr), next(nullptr) {};\n\n\n};\n\n\n\nclass LRUCache {\nprivate:\n    unordered_map&lt;int, DLinkedNode*&gt; cache;\n    DLinkedNode* head;\n    DLinkedNode* tail;\n\n    int size;\n    int capacity;\n\n\n\npublic:\n    LRUCache(int _capacity) : capacity(_capacity), size(0) {\n        head = new DLinkedNode();\n        tail = new DLinkedNode();\n        head-&gt;next = tail;\n        tail-&gt;prev = head;\n    }\n\n    int get(int key) {\n        if (!cache.count(key))\n        {\n            return -1;\n        }\n\n        DLinkedNode* node = cache[key];\n        moveToHead(node);\n        return node-&gt;value;\n    }\n\n    void put(int key, int value) {\n        if (!cache.count(key))\n        {\n            DLinkedNode* node = new DLinkedNode(key, value);\n\n            cache[key] = node;\n\n            addToHead(node);\n            ++size;\n\n            if (size &gt; capacity)\n            {\n                DLinkedNode* removed = removeTail();\n\n                cache.erase(removed-&gt;key);\n\n                delete removed;\n                --size;\n            }\n        }\n        else\n        {\n            DLinkedNode* node = cache[key];\n            node-&gt;value = value;\n            moveToHead(node);\n        }\n    }\n\n    void addToHead(DLinkedNode* node)\n    {\n        node-&gt;prev = head;\n        node-&gt;next = head-&gt;next;\n        head-&gt;next-&gt;prev = node;\n        head-&gt;next = node;\n    }\n\n    void removeNode(DLinkedNode* node)\n    {\n        node-&gt;prev-&gt;next = node-&gt;next;\n        node-&gt;next-&gt;prev = node-&gt;prev;\n    }\n\n    void moveToHead(DLinkedNode* node)\n    {\n        removeNode(node);\n        addToHead(node);\n    }\n\n    DLinkedNode* removeTail() {\n        DLinkedNode* node = tail-&gt;prev;\n        removeNode(node);\n        return node;\n    }\n};\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\n[\"LRUCache\", \"put\", \"put\", \"get\", \"put\", \"get\", \"put\", \"get\", \"get\", \"get\"]\n[[2], [1, 1], [2, 2], [1], [3, 3], [2], [4, 4], [1], [3], [4]]\n\u8f93\u51fa\n[null, null, null, 1, null, -1, null, -1, 3, 4]\n\n\u89e3\u91ca\nLRUCache lRUCache = new LRUCache(2);\nlRUCache.put(1, 1); \/\/ \u7f13\u5b58\u662f {1=1}\nlRUCache.put(2, 2); \/\/ \u7f13\u5b58\u662f {1=1, 2=2}\nlRUCache.get(1);    \/\/ \u8fd4\u56de 1\nlRUCache.put(3, 3); \/\/ \u8be5\u64cd\u4f5c\u4f1a\u4f7f\u5f97\u5173\u952e\u5b57 2 \u4f5c\u5e9f\uff0c\u7f13\u5b58\u662f {1=1, 3=3}\nlRUCache.get(2);    \/\/ \u8fd4\u56de -1 (\u672a\u627e\u5230)\nlRUCache.put(4, 4); \/\/ \u8be5\u64cd\u4f5c\u4f1a\u4f7f\u5f97\u5173\u952e\u5b57 1 \u4f5c\u5e9f\uff0c\u7f13\u5b58\u662f {4=4, 3=3}\nlRUCache.get(1);    \/\/ \u8fd4\u56de -1 (\u672a\u627e\u5230)\nlRUCache.get(3);    \/\/ \u8fd4\u56de 3\nlRUCache.get(4);    \/\/ \u8fd4\u56de 4\n<\/code><\/pre>\n<h3 id=\"\u4e8c\u53c9\u641c\u7d22\u6811\u8fed\u4ee3\u5668\">\u4e8c\u53c9\u641c\u7d22\u6811\u8fed\u4ee3\u5668<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-62\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u5b9e\u73b0\u4e00\u4e2a\u4e8c\u53c9\u641c\u7d22\u6811\u8fed\u4ee3\u5668\u7c7b<code>BSTIterator<\/code> \uff0c\u8868\u793a\u4e00\u4e2a\u6309\u4e2d\u5e8f\u904d\u5386\u4e8c\u53c9\u641c\u7d22\u6811\uff08BST\uff09\u7684\u8fed\u4ee3\u5668\uff1a<\/p>\n<ul>\n<li><code>BSTIterator(TreeNode root)<\/code> \u521d\u59cb\u5316 <code>BSTIterator<\/code> \u7c7b\u7684\u4e00\u4e2a\u5bf9\u8c61\u3002BST \u7684\u6839\u8282\u70b9 <code>root<\/code> \u4f1a\u4f5c\u4e3a\u6784\u9020\u51fd\u6570\u7684\u4e00\u90e8\u5206\u7ed9\u51fa\u3002\u6307\u9488\u5e94\u521d\u59cb\u5316\u4e3a\u4e00\u4e2a\u4e0d\u5b58\u5728\u4e8e BST \u4e2d\u7684\u6570\u5b57\uff0c\u4e14\u8be5\u6570\u5b57\u5c0f\u4e8e BST \u4e2d\u7684\u4efb\u4f55\u5143\u7d20\u3002<\/li>\n<li><code>boolean hasNext()<\/code> \u5982\u679c\u5411\u6307\u9488\u53f3\u4fa7\u904d\u5386\u5b58\u5728\u6570\u5b57\uff0c\u5219\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\u8fd4\u56de <code>false<\/code> \u3002<\/li>\n<li><code>int next()<\/code>\u5c06\u6307\u9488\u5411\u53f3\u79fb\u52a8\uff0c\u7136\u540e\u8fd4\u56de\u6307\u9488\u5904\u7684\u6570\u5b57\u3002<\/li>\n<\/ul>\n<p>\u6ce8\u610f\uff0c\u6307\u9488\u521d\u59cb\u5316\u4e3a\u4e00\u4e2a\u4e0d\u5b58\u5728\u4e8e BST \u4e2d\u7684\u6570\u5b57\uff0c\u6240\u4ee5\u5bf9 <code>next()<\/code> \u7684\u9996\u6b21\u8c03\u7528\u5c06\u8fd4\u56de BST \u4e2d\u7684\u6700\u5c0f\u5143\u7d20\u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u5047\u8bbe <code>next()<\/code> \u8c03\u7528\u603b\u662f\u6709\u6548\u7684\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u5f53\u8c03\u7528 <code>next()<\/code> \u65f6\uff0cBST \u7684\u4e2d\u5e8f\u904d\u5386\u4e2d\u81f3\u5c11\u5b58\u5728\u4e00\u4e2a\u4e0b\u4e00\u4e2a\u6570\u5b57\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-43\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u76f8\u5f53\u4e8e\u4f7f\u7528\u4e2d\u5e8f\u904d\u5386\u5c06\u503c\u5b58\u50a8\u8d77\u6765<\/p>\n<p>\u4f7f\u7528\u7d22\u5f15\u6765\u786e\u8ba4\u503c\u662f\u5426\u5b58\u5728<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-63\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\nclass BSTIterator {\nprivate:\n    vector&lt;int&gt; arr;\n    int idx;\n\n    void inorder(TreeNode* root, vector&lt;int&gt;&amp; res) {\n        if (!root) {\n            return;\n        }\n        inorder(root-&gt;left, res);\n        res.push_back(root-&gt;val);\n        inorder(root-&gt;right, res);\n    }\n    vector&lt;int&gt; inorderTraversal(TreeNode* root) {\n        vector&lt;int&gt; res;\n        inorder(root, res);\n        return res;\n    }\n\npublic:\n    BSTIterator(TreeNode* root) : idx(0), arr(inorderTraversal(root)) {}\n\n    int next() {\n        return arr[idx++];\n    }\n\n    bool hasNext() {\n        return (idx &lt; arr.size());\n    }\n\n};\n\n\/**\n * Your BSTIterator object will be instantiated and called as such:\n * BSTIterator* obj = new BSTIterator(root);\n * int param_1 = obj-&gt;next();\n * bool param_2 = obj-&gt;hasNext();\n *\/\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2018\/12\/25\/bst-tree.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2018\/12\/25\/bst-tree.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\n[\"BSTIterator\", \"next\", \"next\", \"hasNext\", \"next\", \"hasNext\", \"next\", \"hasNext\", \"next\", \"hasNext\"]\n[[[7, 3, 15, null, null, 9, 20]], [], [], [], [], [], [], [], [], []]\n\u8f93\u51fa\n[null, 3, 7, true, 9, true, 15, true, 20, false]\n\n\u89e3\u91ca\nBSTIterator bSTIterator = new BSTIterator([7, 3, 15, null, null, 9, 20]);\nbSTIterator.next();    \/\/ \u8fd4\u56de 3\nbSTIterator.next();    \/\/ \u8fd4\u56de 7\nbSTIterator.hasNext(); \/\/ \u8fd4\u56de True\nbSTIterator.next();    \/\/ \u8fd4\u56de 9\nbSTIterator.hasNext(); \/\/ \u8fd4\u56de True\nbSTIterator.next();    \/\/ \u8fd4\u56de 15\nbSTIterator.hasNext(); \/\/ \u8fd4\u56de True\nbSTIterator.next();    \/\/ \u8fd4\u56de 20\nbSTIterator.hasNext(); \/\/ \u8fd4\u56de False\n<\/code><\/pre>\n<h3 id=\"\u5b9e\u73b0trie\u524d\u7f00\u6811\">\u5b9e\u73b0Trie(\u524d\u7f00\u6811)<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-63\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p><strong><a href=\"https:\/\/baike.baidu.com\/item\/\u5b57\u5178\u6811\/9825209?fr=aladdin\">Trie<\/a><\/strong>\uff08\u53d1\u97f3\u7c7b\u4f3c &#8220;try&#8221;\uff09\u6216\u8005\u8bf4 <strong>\u524d\u7f00\u6811<\/strong> \u662f\u4e00\u79cd\u6811\u5f62\u6570\u636e\u7ed3\u6784\uff0c\u7528\u4e8e\u9ad8\u6548\u5730\u5b58\u50a8\u548c\u68c0\u7d22\u5b57\u7b26\u4e32\u6570\u636e\u96c6\u4e2d\u7684\u952e\u3002\u8fd9\u4e00\u6570\u636e\u7ed3\u6784\u6709\u76f8\u5f53\u591a\u7684\u5e94\u7528\u60c5\u666f\uff0c\u4f8b\u5982\u81ea\u52a8\u8865\u5b8c\u548c\u62fc\u5199\u68c0\u67e5\u3002<\/p>\n<p>\u8bf7\u4f60\u5b9e\u73b0 Trie \u7c7b\uff1a<\/p>\n<ul>\n<li><code>Trie()<\/code> \u521d\u59cb\u5316\u524d\u7f00\u6811\u5bf9\u8c61\u3002<\/li>\n<li><code>void insert(String word)<\/code> \u5411\u524d\u7f00\u6811\u4e2d\u63d2\u5165\u5b57\u7b26\u4e32 <code>word<\/code> \u3002<\/li>\n<li><code>boolean search(String word)<\/code> \u5982\u679c\u5b57\u7b26\u4e32 <code>word<\/code> \u5728\u524d\u7f00\u6811\u4e2d\uff0c\u8fd4\u56de <code>true<\/code>\uff08\u5373\uff0c\u5728\u68c0\u7d22\u4e4b\u524d\u5df2\u7ecf\u63d2\u5165\uff09\uff1b\u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/li>\n<li><code>boolean startsWith(String prefix)<\/code> \u5982\u679c\u4e4b\u524d\u5df2\u7ecf\u63d2\u5165\u7684\u5b57\u7b26\u4e32 <code>word<\/code> \u7684\u524d\u7f00\u4e4b\u4e00\u4e3a <code>prefix<\/code> \uff0c\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-44\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-64\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Trie {\nprivate:\n    vector&lt;Trie*&gt; children;\n    bool isEnd;\n\n    Trie* searchPrefix(string prefix) {\n        Trie* node = this;\n        for (char ch : prefix) {\n            ch -= 'a';\n            if (node-&gt;children[ch] == nullptr) {\n                return nullptr;\n            }\n            node = node-&gt;children[ch];\n        }\n        return node;\n    }\n\npublic:\n    Trie() : children(26), isEnd(false) {}\n\n    void insert(string word) {\n        Trie* node = this;\n        for (char ch : word) {\n            ch -= 'a';\n            if (node-&gt;children[ch] == nullptr) {\n                node-&gt;children[ch] = new Trie();\n            }\n            node = node-&gt;children[ch];\n        }\n        node-&gt;isEnd = true;\n    }\n\n    bool search(string word) {\n        Trie* node = this-&gt;searchPrefix(word);\n        return node != nullptr &amp;&amp; node-&gt;isEnd;\n    }\n\n    bool startsWith(string prefix) {\n        return this-&gt;searchPrefix(prefix) != nullptr;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\n[\"Trie\", \"insert\", \"search\", \"search\", \"startsWith\", \"insert\", \"search\"]\n[[], [\"apple\"], [\"apple\"], [\"app\"], [\"app\"], [\"app\"], [\"app\"]]\n\u8f93\u51fa\n[null, null, true, false, true, null, true]\n\n\u89e3\u91ca\nTrie trie = new Trie();\ntrie.insert(\"apple\");\ntrie.search(\"apple\");   \/\/ \u8fd4\u56de True\ntrie.search(\"app\");     \/\/ \u8fd4\u56de False\ntrie.startsWith(\"app\"); \/\/ \u8fd4\u56de True\ntrie.insert(\"app\");\ntrie.search(\"app\");     \/\/ \u8fd4\u56de True\n<\/code><\/pre>\n<h2 id=\"\u6570\u7ec4\">\u6570\u7ec4<\/h2>\n<h3 id=\"\u9664\u81ea\u8eab\u4ee5\u5916\u6570\u7ec4\u7684\u4e58\u79ef\">\u9664\u81ea\u8eab\u4ee5\u5916\u6570\u7ec4\u7684\u4e58\u79ef<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-64\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code>\uff0c\u8fd4\u56de <em>\u6570\u7ec4 <code>answer<\/code> \uff0c\u5176\u4e2d <code>answer[i]<\/code> \u7b49\u4e8e <code>nums<\/code> \u4e2d\u9664 <code>nums[i]<\/code> \u4e4b\u5916\u5176\u4f59\u5404\u5143\u7d20\u7684\u4e58\u79ef<\/em> \u3002<\/p>\n<p>\u9898\u76ee\u6570\u636e <strong>\u4fdd\u8bc1<\/strong> \u6570\u7ec4 <code>nums<\/code>\u4e4b\u4e2d\u4efb\u610f\u5143\u7d20\u7684\u5168\u90e8\u524d\u7f00\u5143\u7d20\u548c\u540e\u7f00\u7684\u4e58\u79ef\u90fd\u5728 <strong>32 \u4f4d<\/strong> \u6574\u6570\u8303\u56f4\u5185\u3002<\/p>\n<p>\u8bf7 <strong>\u4e0d\u8981\u4f7f\u7528\u9664\u6cd5\uff0c<\/strong>\u4e14\u5728 <code>O(*n*)<\/code> \u65f6\u95f4\u590d\u6742\u5ea6\u5185\u5b8c\u6210\u6b64\u9898\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-45\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u4e00\u90e8\u5206\u7528\u6765\u5b58\u50a8\u524d\u7f00,\u4e00\u90e8\u5206\u7528\u6765\u5b58\u50a8\u540e\u7f00,\u601d\u8def\u5f88\u7b80\u5355<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-65\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;int&gt; productExceptSelf(vector&lt;int&gt;&amp; nums) {\n        int nums_size = nums.size();\n        vector&lt;int&gt; prefix(nums_size + 1);\n        vector&lt;int&gt; lastfix(nums_size + 1);\n        vector&lt;int&gt; answer(nums_size);\n        prefix[0] = 1;\n        lastfix[nums_size - 1] = 1;\n\n        for(int i=1;i&lt;nums_size;i++)\n        {           \n                prefix[i] = nums[i - 1] * prefix[i - 1];      \n                lastfix[nums_size - i -1] = nums[nums_size - i ] * lastfix[nums_size - i];\n  \n        }\n\n        for(int i=0;i&lt;nums_size;i++)\n        {            \n            answer[i] = prefix[i] * lastfix[i];\n        }\n\n        return answer;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: nums = [1,2,3,4]\n\u8f93\u51fa: [24,12,8,6]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: nums = [-1,1,0,-3,3]\n\u8f93\u51fa: [0,0,9,0,0]\n<\/code><\/pre>\n<h3 id=\"\u548c\u4e3ak\u7684\u5b50\u6570\u7ec4\">\u548c\u4e3aK\u7684\u5b50\u6570\u7ec4<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-65\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \u548c\u4e00\u4e2a\u6574\u6570 <code>k<\/code> \uff0c\u8bf7\u4f60\u7edf\u8ba1\u5e76\u8fd4\u56de <em>\u8be5\u6570\u7ec4\u4e2d\u548c\u4e3a <code>k<\/code> \u7684\u5b50\u6570\u7ec4\u7684\u4e2a\u6570<\/em> \u3002<\/p>\n<p>\u5b50\u6570\u7ec4\u662f\u6570\u7ec4\u4e2d\u5143\u7d20\u7684\u8fde\u7eed\u975e\u7a7a\u5e8f\u5217\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-46\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-66\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    int subarraySum(vector&lt;int&gt;&amp; nums, int k) {\n        int n = nums.size();\n        vector&lt;int&gt; s(n + 1);\n        for (int i = 0; i &lt; n; i++) {\n            s[i + 1] = s[i] + nums[i];\n        }\n\n        int ans = 0;\n        unordered_map&lt;int, int&gt; cnt;\n        for (int sj : s) {\n            \/\/ \u6ce8\u610f\u4e0d\u8981\u76f4\u63a5 += cnt[sj-k]\uff0c\u5982\u679c sj-k \u4e0d\u5b58\u5728\uff0c\u4f1a\u63d2\u5165 sj-k\n            ans += cnt.contains(sj - k) ? cnt[sj - k] : 0;\n            cnt[sj]++;\n        }\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,1,1], k = 2\n\u8f93\u51fa\uff1a2\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,2,3], k = 3\n\u8f93\u51fa\uff1a2\n<\/code><\/pre>\n<h3 id=\"\u533a\u57df\u548c\u68c0\u7d22---\u6570\u7ec4\u4e0d\u53ef\u53d8\">\u533a\u57df\u548c\u68c0\u7d22 &#8211; \u6570\u7ec4\u4e0d\u53ef\u53d8<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-66\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code>\uff0c\u5904\u7406\u4ee5\u4e0b\u7c7b\u578b\u7684\u591a\u4e2a\u67e5\u8be2:<\/p>\n<ol start=\"\">\n<li>\u8ba1\u7b97\u7d22\u5f15 <code>left<\/code> \u548c <code>right<\/code> \uff08\u5305\u542b <code>left<\/code> \u548c <code>right<\/code>\uff09\u4e4b\u95f4\u7684 <code>nums<\/code> \u5143\u7d20\u7684 <strong>\u548c<\/strong> \uff0c\u5176\u4e2d <code>left &lt;= right<\/code><\/li>\n<\/ol>\n<p>\u5b9e\u73b0 <code>NumArray<\/code> \u7c7b\uff1a<\/p>\n<ul>\n<li><code>NumArray(int[] nums)<\/code> \u4f7f\u7528\u6570\u7ec4 <code>nums<\/code> \u521d\u59cb\u5316\u5bf9\u8c61<\/li>\n<li><code>int sumRange(int i, int j)<\/code> \u8fd4\u56de\u6570\u7ec4 <code>nums<\/code> \u4e2d\u7d22\u5f15 <code>left<\/code> \u548c <code>right<\/code> \u4e4b\u95f4\u7684\u5143\u7d20\u7684 <strong>\u603b\u548c<\/strong> \uff0c\u5305\u542b <code>left<\/code> \u548c <code>right<\/code> \u4e24\u70b9\uff08\u4e5f\u5c31\u662f <code>nums[left] + nums[left + 1] + ... + nums[right]<\/code> )<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-47\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u95ee\uff1a\u4e3a\u4ec0\u4e48\u8981\u5b9a\u4e49 s[0]=0\uff0c\u8fd9\u6837\u505a\u6709\u4ec0\u4e48\u597d\u5904\uff1f<\/p>\n<p>\u7b54\uff1a\u5982\u679c left=0\uff0c\u8981\u8ba1\u7b97\u7684\u5b50\u6570\u7ec4\u662f\u4e00\u4e2a\u524d\u7f00\uff08\u4ece a[0] \u5230 a[right]\uff09\uff0c\u6211\u4eec\u8981\u7528 s[right+1] \u51cf\u53bb s[0]\u3002\u5982\u679c\u4e0d\u5b9a\u4e49 s[0]=0\uff0c\u5c31\u5fc5\u987b\u7279\u5224 left=0 \u7684\u60c5\u51b5\u4e86\uff08\u8bfb\u8005\u53ef\u4ee5\u8bd5\u8bd5\uff09\u3002\u901a\u8fc7\u5b9a\u4e49 s[0]=0\uff0c\u4efb\u610f\u5b50\u6570\u7ec4\uff08\u5305\u62ec\u524d\u7f00\uff09\u90fd\u53ef\u4ee5\u8868\u793a\u4e3a\u4e24\u4e2a\u524d\u7f00\u548c\u7684\u5dee\u3002\u6b64\u5916\uff0c\u5982\u679c a \u662f\u7a7a\u6570\u7ec4\uff0c\u5b9a\u4e49 s[0]=0 \u7684\u5199\u6cd5\u662f\u53ef\u4ee5\u517c\u5bb9\u8fd9\u79cd\u60c5\u51b5\u7684\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-67\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\n\nclass NumArray {\n\nprivate:\n    vector&lt;int&gt; ans;\n\npublic:\n    NumArray(vector&lt;int&gt;&amp; nums) {\n        int n = nums.size();\n        ans.resize(n + 1);\n        ans[0] = 0;\n\n        for (int i = 0; i &lt; n; i++)\n        {\n            ans[i + 1] += ans[i] + nums[i];\n        }\n\n\n    }\n\n    int sumRange(int left, int right) {\n\n        return ans[right + 1] - ans[left];\n\n    }\n};\n\n\/**\n * Your NumArray object will be instantiated and called as such:\n * NumArray* obj = new NumArray(nums);\n * int param_1 = obj-&gt;sumRange(left,right);\n *\/\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1a\n[\"NumArray\", \"sumRange\", \"sumRange\", \"sumRange\"]\n[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]\n\u8f93\u51fa\uff1a\n[null, 1, -1, -3]\n\n\u89e3\u91ca\uff1a\nNumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);\nnumArray.sumRange(0, 2); \/\/ return 1 ((-2) + 0 + 3)\nnumArray.sumRange(2, 5); \/\/ return -1 (3 + (-5) + 2 + (-1)) \nnumArray.sumRange(0, 5); \/\/ return -3 ((-2) + 0 + 3 + (-5) + 2 + (-1))\n<\/code><\/pre>\n<h2 id=\"\u5b57\u7b26\u4e32\">\u5b57\u7b26\u4e32<\/h2>\n<h3 id=\"\u6700\u540e\u4e00\u4e2a\u5355\u8bcd\u7684\u957f\u5ea6\">\u6700\u540e\u4e00\u4e2a\u5355\u8bcd\u7684\u957f\u5ea6<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-67\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32 <code>s<\/code>\uff0c\u7531\u82e5\u5e72\u5355\u8bcd\u7ec4\u6210\uff0c\u5355\u8bcd\u524d\u540e\u7528\u4e00\u4e9b\u7a7a\u683c\u5b57\u7b26\u9694\u5f00\u3002\u8fd4\u56de\u5b57\u7b26\u4e32\u4e2d <strong>\u6700\u540e\u4e00\u4e2a<\/strong> \u5355\u8bcd\u7684\u957f\u5ea6\u3002<\/p>\n<p><strong>\u5355\u8bcd<\/strong> \u662f\u6307\u4ec5\u7531\u5b57\u6bcd\u7ec4\u6210\u3001\u4e0d\u5305\u542b\u4efb\u4f55\u7a7a\u683c\u5b57\u7b26\u7684\u6700\u5927\u5b50\u5b57\u7b26\u4e32\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-48\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u4ece\u5b57\u7b26\u4e32\u7684\u672b\u5c3e\u8fdb\u884c\u53cd\u5411\u904d\u5386,\u5f53\u5b58\u50a8\u7684str\u4e3a\u975e\u7a7a,\u4e14\u5f53\u524d\u7684s[i]\u4e3a\u7a7a,\u4ee3\u8868\u7740\u904d\u5386\u7ed3\u675f,\u76f4\u63a5\u8f93\u51fas\u7684\u5927\u5c0f<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-68\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-c++\" lang=\"c++\">#include &lt;iostream&gt;\n#include &lt;string&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int lengthOfLastWord(string s) {\n        vector&lt;char&gt; str;\n        int string_size = s.size();\n\n        for (int i = string_size - 1; i &gt;= 0; i--) {\n            if (s[i] == ' ') {\n                if (!str.empty()) {\n                    return str.size();\n                }\n            }\n            else {\n                str.push_back(s[i]);\n            }\n        }\n\n        return str.size();\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-c++\" lang=\"c++\">\u8f93\u5165\uff1as = \"Hello World\"\n\u8f93\u51fa\uff1a5\n\u89e3\u91ca\uff1a\u6700\u540e\u4e00\u4e2a\u5355\u8bcd\u662f\u201cWorld\u201d\uff0c\u957f\u5ea6\u4e3a 5\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-c++\" lang=\"c++\">\u8f93\u5165\uff1as = \"   fly me   to   the moon  \"\n\u8f93\u51fa\uff1a4\n\u89e3\u91ca\uff1a\u6700\u540e\u4e00\u4e2a\u5355\u8bcd\u662f\u201cmoon\u201d\uff0c\u957f\u5ea6\u4e3a 4\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code class=\"language-c++\" lang=\"c++\">\u8f93\u5165\uff1as = \"luffy is still joyboy\"\n\u8f93\u51fa\uff1a6\n\u89e3\u91ca\uff1a\u6700\u540e\u4e00\u4e2a\u5355\u8bcd\u662f\u957f\u5ea6\u4e3a 6 \u7684\u201cjoyboy\u201d\u3002\n<\/code><\/pre>\n<h3 id=\"\u6700\u957f\u516c\u4f17\u524d\u7f00\">\u6700\u957f\u516c\u4f17\u524d\u7f00<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-68\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7f16\u5199\u4e00\u4e2a\u51fd\u6570\u6765\u67e5\u627e\u5b57\u7b26\u4e32\u6570\u7ec4\u4e2d\u7684\u6700\u957f\u516c\u5171\u524d\u7f00\u3002<\/p>\n<p>\u5982\u679c\u4e0d\u5b58\u5728\u516c\u5171\u524d\u7f00\uff0c\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32 <code>\"\"<\/code>\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-49\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6a2a\u5411\u626b\u63cf<\/p>\n<p>\u4f9d\u6b21\u904d\u5386\u5b57\u7b26\u4e32\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e2a\u5b57\u7b26\u4e32\uff0c\u5bf9\u4e8e\u6bcf\u4e2a\u904d\u5386\u5230\u7684\u5b57\u7b26\u4e32\uff0c\u66f4\u65b0\u6700\u957f\u516c\u5171\u524d\u7f00\uff0c\u5f53\u904d\u5386\u5b8c\u6240\u6709\u7684\u5b57\u7b26\u4e32\u4ee5\u540e\uff0c\u5373\u53ef\u5f97\u5230\u5b57\u7b26\u4e32\u6570\u7ec4\u4e2d\u7684\u6700\u957f\u516c\u5171\u524d\u7f00\u3002<\/p>\n<p>\u5982\u679c\u5728\u5c1a\u672a\u904d\u5386\u5b8c\u6240\u6709\u7684\u5b57\u7b26\u4e32\u65f6\uff0c\u6700\u957f\u516c\u5171\u524d\u7f00\u5df2\u7ecf\u662f\u7a7a\u4e32\uff0c\u5219\u6700\u957f\u516c\u5171\u524d\u7f00\u4e00\u5b9a\u662f\u7a7a\u4e32\uff0c\u56e0\u6b64\u4e0d\u9700\u8981\u7ee7\u7eed\u904d\u5386\u5269\u4e0b\u7684\u5b57\u7b26\u4e32\uff0c\u76f4\u63a5\u8fd4\u56de\u7a7a\u4e32\u5373\u53ef\u3002<\/p>\n<p>\u7eb5\u5411\u626b\u63cf<\/p>\n<p>\u7eb5\u5411\u626b\u63cf\u65f6\uff0c\u4ece\u524d\u5f80\u540e\u904d\u5386\u6240\u6709\u5b57\u7b26\u4e32\u7684\u6bcf\u4e00\u5217\uff0c\u6bd4\u8f83\u76f8\u540c\u5217\u4e0a\u7684\u5b57\u7b26\u662f\u5426\u76f8\u540c\uff0c\u5982\u679c\u76f8\u540c\u5219\u7ee7\u7eed\u5bf9\u4e0b\u4e00\u5217\u8fdb\u884c\u6bd4\u8f83\uff0c\u5982\u679c\u4e0d\u76f8\u540c\u5219\u5f53\u524d\u5217\u4e0d\u518d\u5c5e\u4e8e\u516c\u5171\u524d\u7f00\uff0c\u5f53\u524d\u5217\u4e4b\u524d\u7684\u90e8\u5206\u4e3a\u6700\u957f\u516c\u5171\u524d\u7f00\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-69\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;string&gt;\n\nusing namespace std;\n\n\/\/\u6a2a\u5411\u626b\u63cf\nclass Solution {\npublic:\n    string longestCommonPrefix(vector&lt;string&gt;&amp; strs) {\n        int strs_size = strs.size();\n        string long_prefix = strs[0];\n\n        if (!strs_size)\n            return \"\";\n\n        for (int i = 1; i &lt; strs_size; i++)\n        {\n            long_prefix = longestCommonPrefix(long_prefix, strs[i]);\n\n            if (!long_prefix.size())\n                break;\n        }\n\n        return long_prefix;\n\n    }\n\n\n    string longestCommonPrefix(const string&amp; str1, const string&amp; str2)\n    {\n        int length = min(str1.length(), str2.length());\n        int index = 0;\n        while (index &lt; length &amp;&amp; str1[index] == str2[index])\n        {\n            ++index;\n        }\n\n        return str1.substr(0, index);\n    }\n};\n\n\/\/\u7eb5\u5411\u626b\u63cf\nclass Solution {\npublic:\n    string longestCommonPrefix(vector&lt;string&gt;&amp; strs) {\n        int size = strs.size();\n        if (!size)\n        {\n            return \"\";\n        }\n\n        string prefix = strs[0];\n\n        for (int charnum = 0; charnum &lt; prefix.size(); charnum++)\n        {\n            char a = strs[0][charnum];\n            for (int strnum = 1; strnum &lt; size; strnum++)\n            {\n                if (a != strs[strnum][charnum] || charnum == strs[strnum].size())\n                    return strs[0].substr(0, charnum);\n            }\n        }\n\n        return strs[0];\n\n\n\n    }\n\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1astrs = [\"flower\",\"flow\",\"flight\"]\n\u8f93\u51fa\uff1a\"fl\"\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1astrs = [\"dog\",\"racecar\",\"car\"]\n\u8f93\u51fa\uff1a\"\"\n\u89e3\u91ca\uff1a\u8f93\u5165\u4e0d\u5b58\u5728\u516c\u5171\u524d\u7f00\u3002\n<\/code><\/pre>\n<h3 id=\"\u53cd\u8f6c\u5b57\u7b26\u4e32\u4e2d\u7684\u5355\u8bcd\">\u53cd\u8f6c\u5b57\u7b26\u4e32\u4e2d\u7684\u5355\u8bcd<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-69\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32 <code>s<\/code> \uff0c\u8bf7\u4f60\u53cd\u8f6c\u5b57\u7b26\u4e32\u4e2d <strong>\u5355\u8bcd<\/strong> \u7684\u987a\u5e8f\u3002<\/p>\n<p><strong>\u5355\u8bcd<\/strong> \u662f\u7531\u975e\u7a7a\u683c\u5b57\u7b26\u7ec4\u6210\u7684\u5b57\u7b26\u4e32\u3002<code>s<\/code> \u4e2d\u4f7f\u7528\u81f3\u5c11\u4e00\u4e2a\u7a7a\u683c\u5c06\u5b57\u7b26\u4e32\u4e2d\u7684 <strong>\u5355\u8bcd<\/strong> \u5206\u9694\u5f00\u3002<\/p>\n<p>\u8fd4\u56de <strong>\u5355\u8bcd<\/strong> \u987a\u5e8f\u98a0\u5012\u4e14 <strong>\u5355\u8bcd<\/strong> \u4e4b\u95f4\u7528\u5355\u4e2a\u7a7a\u683c\u8fde\u63a5\u7684\u7ed3\u679c\u5b57\u7b26\u4e32\u3002<\/p>\n<p><strong>\u6ce8\u610f\uff1a<\/strong>\u8f93\u5165\u5b57\u7b26\u4e32 <code>s<\/code>\u4e2d\u53ef\u80fd\u4f1a\u5b58\u5728\u524d\u5bfc\u7a7a\u683c\u3001\u5c3e\u968f\u7a7a\u683c\u6216\u8005\u5355\u8bcd\u95f4\u7684\u591a\u4e2a\u7a7a\u683c\u3002\u8fd4\u56de\u7684\u7ed3\u679c\u5b57\u7b26\u4e32\u4e2d\uff0c\u5355\u8bcd\u95f4\u5e94\u5f53\u4ec5\u7528\u5355\u4e2a\u7a7a\u683c\u5206\u9694\uff0c\u4e14\u4e0d\u5305\u542b\u4efb\u4f55\u989d\u5916\u7684\u7a7a\u683c\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-50\">\u9898\u76ee\u5206\u6790<\/h4>\n<ol start=\"\">\n<li>\u53bb\u9664\u5b57\u7b26\u4e32\u5934\u5c3e\u7684\u7a7a\u683c\u3002<\/li>\n<li>\u5206\u5272\u5b57\u7b26\u4e32\u4e2d\u7684\u5355\u8bcd\u3002<\/li>\n<li>\u53cd\u8f6c\u5355\u8bcd\u7684\u987a\u5e8f\u3002<\/li>\n<li>\u5c06\u53cd\u8f6c\u540e\u7684\u5355\u8bcd\u8fde\u63a5\u6210\u4e00\u4e2a\u65b0\u7684\u5b57\u7b26\u4e32\u3002<\/li>\n<\/ol>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-70\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;string&gt;\n#include &lt;vector&gt;\n#include &lt;sstream&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    string reverseWords(string s) {\n        stringstream ss(s);\n        vector&lt;string&gt; words;\n        string word;\n\n        \/\/ \u4f7f\u7528 stringstream \u5206\u5272\u5355\u8bcd\n        while (ss &gt;&gt; word) {\n            words.push_back(word);\n        }\n\n        \/\/ \u53cd\u8f6c\u5355\u8bcd\u987a\u5e8f\u5e76\u8fde\u63a5\u6210\u5b57\u7b26\u4e32\n        string reversed;\n        for (int i = words.size() - 1; i &gt;= 0; i--) {\n            reversed += words[i];\n            if (i != 0) {\n                reversed += \" \";\n            }\n        }\n\n        return reversed;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"the sky is blue\"\n\u8f93\u51fa\uff1a\"blue is sky the\"\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"  hello world  \"\n\u8f93\u51fa\uff1a\"world hello\"\n\u89e3\u91ca\uff1a\u53cd\u8f6c\u540e\u7684\u5b57\u7b26\u4e32\u4e2d\u4e0d\u80fd\u5b58\u5728\u524d\u5bfc\u7a7a\u683c\u548c\u5c3e\u968f\u7a7a\u683c\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"a good   example\"\n\u8f93\u51fa\uff1a\"example good a\"\n\u89e3\u91ca\uff1a\u5982\u679c\u4e24\u4e2a\u5355\u8bcd\u95f4\u6709\u591a\u4f59\u7684\u7a7a\u683c\uff0c\u53cd\u8f6c\u540e\u7684\u5b57\u7b26\u4e32\u9700\u8981\u5c06\u5355\u8bcd\u95f4\u7684\u7a7a\u683c\u51cf\u5c11\u5230\u4ec5\u6709\u4e00\u4e2a\u3002\n<\/code><\/pre>\n<h3 id=\"z\u5b57\u5f62\u53d8\u6362\">Z\u5b57\u5f62\u53d8\u6362<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-70\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u5c06\u4e00\u4e2a\u7ed9\u5b9a\u5b57\u7b26\u4e32 <code>s<\/code> \u6839\u636e\u7ed9\u5b9a\u7684\u884c\u6570 <code>numRows<\/code> \uff0c\u4ee5\u4ece\u4e0a\u5f80\u4e0b\u3001\u4ece\u5de6\u5230\u53f3\u8fdb\u884c Z \u5b57\u5f62\u6392\u5217\u3002<\/p>\n<p>\u6bd4\u5982\u8f93\u5165\u5b57\u7b26\u4e32\u4e3a <code>\"PAYPALISHIRING\"<\/code> \u884c\u6570\u4e3a <code>3<\/code> \u65f6\uff0c\u6392\u5217\u5982\u4e0b\uff1a<\/p>\n<pre><code>P   A   H   N\nA P L S I I G\nY   I   R\n<\/code><\/pre>\n<p>\u4e4b\u540e\uff0c\u4f60\u7684\u8f93\u51fa\u9700\u8981\u4ece\u5de6\u5f80\u53f3\u9010\u884c\u8bfb\u53d6\uff0c\u4ea7\u751f\u51fa\u4e00\u4e2a\u65b0\u7684\u5b57\u7b26\u4e32\uff0c\u6bd4\u5982\uff1a<code>\"PAHNAPLSIIGYIR\"<\/code>\u3002<\/p>\n<p>\u8bf7\u4f60\u5b9e\u73b0\u8fd9\u4e2a\u5c06\u5b57\u7b26\u4e32\u8fdb\u884c\u6307\u5b9a\u884c\u6570\u53d8\u6362\u7684\u51fd\u6570\uff1a<\/p>\n<pre><code>string convert(string s, int numRows);\n<\/code><\/pre>\n<h4 id=\"\u9898\u76ee\u5206\u6790-51\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5f53\u6211\u4eec\u5728\u77e9\u9635\u4e0a\u586b\u5199\u5b57\u7b26\u65f6\uff0c\u4f1a\u5411\u4e0b\u586b\u5199 r \u4e2a\u5b57\u7b26\uff0c\u7136\u540e\u5411\u53f3\u4e0a\u7ee7\u7eed\u586b\u5199 r\u22122 \u4e2a\u5b57\u7b26\uff0c\u6700\u540e\u56de\u5230\u7b2c\u4e00\u884c\uff0c\u56e0\u6b64 Z \u5b57\u5f62\u53d8\u6362\u7684\u5468\u671f t=r+r\u22122=2r\u22122\uff0c\u6bcf\u4e2a\u5468\u671f\u4f1a\u5360\u7528\u77e9\u9635\u4e0a\u7684 1+r\u22122=r\u22121\u5217\u3002<\/p>\n<p>\u4e0b\u65b9\u7684\u4ee3\u7801\u66f4\u52a0\u7b80\u5355\u6613\u61c2,\u5229\u7528\u884c\u8f6c\u5411\u6807\u5fd7\u63a7\u5236\u884c\u7684\u4f4d\u7f6e<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-71\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;string&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    string convert(string s, int numRows) {\n        if (numRows == 1)\n            return s;\n        vector&lt;string&gt; rows(numRows);\n\n        \/\/\u884c\u8f6c\u5411\u6807\u5fd7\n        int flag = 1;\n        \/\/\u884c\u4e0b\u6807\u7d22\u5f15\n        int idxRows = 0;\n\n        for (int i = 0; i &lt; s.size(); i++)\n        {\n            rows[idxRows].push_back(s[i]);\n            \/\/\u66f4\u65b0\u884c\u4e0b\u6807\n            idxRows += flag;\n            if (idxRows == numRows - 1 || idxRows == 0)\n            {\n                flag = -flag;\n            }\n        }\n\n        string res;\n        for (auto&amp; row : rows)\n        {\n            res += row;\n        }\n\n        return res;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1as = \"PAYPALISHIRING\", numRows = 3\n\u8f93\u51fa\uff1a\"PAHNAPLSIIGYIR\"\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1as = \"PAYPALISHIRING\", numRows = 4\n\u8f93\u51fa\uff1a\"PINALSIGYAHRPI\"\n\u89e3\u91ca\uff1a\nP     I    N\nA   L S  I G\nY A   H R\nP     I\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\u8f93\u5165\uff1as = \"A\", numRows = 1\n\u8f93\u51fa\uff1a\"A\"\n<\/code><\/pre>\n<h3 id=\"\u627e\u51fa\u5b57\u7b26\u4e32\u4e2d\u7b2c\u4e00\u4e2a\u5339\u914d\u9879\u7684\u4e0b\u6807\">\u627e\u51fa\u5b57\u7b26\u4e32\u4e2d\u7b2c\u4e00\u4e2a\u5339\u914d\u9879\u7684\u4e0b\u6807<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-71\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e24\u4e2a\u5b57\u7b26\u4e32 <code>haystack<\/code> \u548c <code>needle<\/code> \uff0c\u8bf7\u4f60\u5728 <code>haystack<\/code> \u5b57\u7b26\u4e32\u4e2d\u627e\u51fa <code>needle<\/code> \u5b57\u7b26\u4e32\u7684\u7b2c\u4e00\u4e2a\u5339\u914d\u9879\u7684\u4e0b\u6807\uff08\u4e0b\u6807\u4ece 0 \u5f00\u59cb\uff09\u3002\u5982\u679c <code>needle<\/code> \u4e0d\u662f <code>haystack<\/code> \u7684\u4e00\u90e8\u5206\uff0c\u5219\u8fd4\u56de <code>-1<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-52\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8bf7\u89c1KMP\u7b97\u6cd5<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-72\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int strStr(string haystack, string needle) {\n        \n        int m = haystack.size();\n        int n = needle.size();\n\n        if (n == 0) return 0;\n\n        haystack.insert(haystack.begin(), ' ');\n        needle.insert(needle.begin(), ' ');\n\n\n        vector&lt;int&gt; next(n + 1);\n\n        for (int i = 2, j = 0; i &lt; n; i++)\n        {\n            while (j &amp;&amp; needle[i] != needle[j + 1])\n            {\n                j = next[j];\n            }\n\n            if (needle[i] == needle[j + 1])\n            {\n                j++;\n            }\n\n            next[i] = j;\n        }\n\n        for (int i = 1, j = 0; i &lt; m ; i++)\n        {\n            while (j &amp;&amp; haystack[i] != needle[j + 1])\n            {\n                j = next[j];\n            }\n\n            if (haystack[i] == needle[j + 1])\n            {\n                j++;\n            }\n\n            if (j == n) return i - n;\n\n        }\n\n        return -1;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ahaystack = \"sadbutsad\", needle = \"sad\"\n\u8f93\u51fa\uff1a0\n\u89e3\u91ca\uff1a\"sad\" \u5728\u4e0b\u6807 0 \u548c 6 \u5904\u5339\u914d\u3002\n\u7b2c\u4e00\u4e2a\u5339\u914d\u9879\u7684\u4e0b\u6807\u662f 0 \uff0c\u6240\u4ee5\u8fd4\u56de 0 \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ahaystack = \"leetcode\", needle = \"leeto\"\n\u8f93\u51fa\uff1a-1\n\u89e3\u91ca\uff1a\"leeto\" \u6ca1\u6709\u5728 \"leetcode\" \u4e2d\u51fa\u73b0\uff0c\u6240\u4ee5\u8fd4\u56de -1 \u3002\n<\/code><\/pre>\n<h3 id=\"\u6587\u672c\u5de6\u53f3\u5bf9\u9f50\">\u6587\u672c\u5de6\u53f3\u5bf9\u9f50<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-72\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u5355\u8bcd\u6570\u7ec4 <code>words<\/code> \u548c\u4e00\u4e2a\u957f\u5ea6 <code>maxWidth<\/code> \uff0c\u91cd\u65b0\u6392\u7248\u5355\u8bcd\uff0c\u4f7f\u5176\u6210\u4e3a\u6bcf\u884c\u6070\u597d\u6709 <code>maxWidth<\/code> \u4e2a\u5b57\u7b26\uff0c\u4e14\u5de6\u53f3\u4e24\u7aef\u5bf9\u9f50\u7684\u6587\u672c\u3002<\/p>\n<p>\u4f60\u5e94\u8be5\u4f7f\u7528 \u201c<strong>\u8d2a\u5fc3\u7b97\u6cd5<\/strong>\u201d \u6765\u653e\u7f6e\u7ed9\u5b9a\u7684\u5355\u8bcd\uff1b\u4e5f\u5c31\u662f\u8bf4\uff0c\u5c3d\u53ef\u80fd\u591a\u5730\u5f80\u6bcf\u884c\u4e2d\u653e\u7f6e\u5355\u8bcd\u3002\u5fc5\u8981\u65f6\u53ef\u7528\u7a7a\u683c <code>' '<\/code> \u586b\u5145\uff0c\u4f7f\u5f97\u6bcf\u884c\u6070\u597d\u6709 <em>maxWidth<\/em> \u4e2a\u5b57\u7b26\u3002<\/p>\n<p>\u8981\u6c42\u5c3d\u53ef\u80fd\u5747\u5300\u5206\u914d\u5355\u8bcd\u95f4\u7684\u7a7a\u683c\u6570\u91cf\u3002\u5982\u679c\u67d0\u4e00\u884c\u5355\u8bcd\u95f4\u7684\u7a7a\u683c\u4e0d\u80fd\u5747\u5300\u5206\u914d\uff0c\u5219\u5de6\u4fa7\u653e\u7f6e\u7684\u7a7a\u683c\u6570\u8981\u591a\u4e8e\u53f3\u4fa7\u7684\u7a7a\u683c\u6570\u3002<\/p>\n<p>\u6587\u672c\u7684\u6700\u540e\u4e00\u884c\u5e94\u4e3a\u5de6\u5bf9\u9f50\uff0c\u4e14\u5355\u8bcd\u4e4b\u95f4\u4e0d\u63d2\u5165<strong>\u989d\u5916\u7684<\/strong>\u7a7a\u683c\u3002<\/p>\n<p><strong>\u6ce8\u610f:<\/strong><\/p>\n<ul>\n<li>\u5355\u8bcd\u662f\u6307\u7531\u975e\u7a7a\u683c\u5b57\u7b26\u7ec4\u6210\u7684\u5b57\u7b26\u5e8f\u5217\u3002<\/li>\n<li>\u6bcf\u4e2a\u5355\u8bcd\u7684\u957f\u5ea6\u5927\u4e8e 0\uff0c\u5c0f\u4e8e\u7b49\u4e8e <em>maxWidth<\/em>\u3002<\/li>\n<li>\u8f93\u5165\u5355\u8bcd\u6570\u7ec4 <code>words<\/code> \u81f3\u5c11\u5305\u542b\u4e00\u4e2a\u5355\u8bcd\u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-73\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u6839\u636e\u9898\u5e72\u63cf\u8ff0\u7684\u8d2a\u5fc3\u7b97\u6cd5\uff0c\u5bf9\u4e8e\u6bcf\u4e00\u884c\uff0c\u6211\u4eec\u9996\u5148\u786e\u5b9a\u6700\u591a\u53ef\u4ee5\u653e\u7f6e\u591a\u5c11\u5355\u8bcd\uff0c\u8fd9\u6837\u53ef\u4ee5\u5f97\u5230\u8be5\u884c\u7684\u7a7a\u683c\u4e2a\u6570\uff0c\u4ece\u800c\u786e\u5b9a\u8be5\u884c\u5355\u8bcd\u4e4b\u95f4\u7684\u7a7a\u683c\u4e2a\u6570\u3002<\/p>\n<p>\u6839\u636e\u9898\u76ee\u4e2d\u586b\u5145\u7a7a\u683c\u7684\u7ec6\u8282\uff0c\u6211\u4eec\u5206\u4ee5\u4e0b\u4e09\u79cd\u60c5\u51b5\u8ba8\u8bba\uff1a<\/p>\n<ul>\n<li>\u5f53\u524d\u884c\u662f\u6700\u540e\u4e00\u884c\uff1a\u5355\u8bcd\u5de6\u5bf9\u9f50\uff0c\u4e14\u5355\u8bcd\u4e4b\u95f4\u5e94\u53ea\u6709\u4e00\u4e2a\u7a7a\u683c\uff0c\u5728\u884c\u672b\u586b\u5145\u5269\u4f59\u7a7a\u683c\uff1b<\/li>\n<li>\u5f53\u524d\u884c\u4e0d\u662f\u6700\u540e\u4e00\u884c\uff0c\u4e14\u53ea\u6709\u4e00\u4e2a\u5355\u8bcd\uff1a\u8be5\u5355\u8bcd\u5de6\u5bf9\u9f50\uff0c\u5728\u884c\u672b\u586b\u5145\u7a7a\u683c\uff1b<\/li>\n<li>\u5f53\u524d\u884c\u4e0d\u662f\u6700\u540e\u4e00\u884c\uff0c\u4e14\u4e0d\u53ea\u4e00\u4e2a\u5355\u8bcd\uff1a\u8bbe\u5f53\u524d\u884c\u5355\u8bcd\u6570\u4e3a numWords\uff0c\u7a7a\u683c\u6570\u4e3a numSpaces\uff0c\u6211\u4eec\u9700\u8981\u5c06\u7a7a\u683c\u5747\u5300\u5206\u914d\u5728\u5355\u8bcd\u4e4b\u95f4<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-73\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;string&gt;\n\nusing namespace std;\n\nclass Solution {\n    \/\/ blank \u8fd4\u56de\u957f\u5ea6\u4e3a n \u7684\u7531\u7a7a\u683c\u7ec4\u6210\u7684\u5b57\u7b26\u4e32\n    string blank(int n) {\n        return string(n, ' ');\n    }\n\n    \/\/ join \u8fd4\u56de\u7528 sep \u62fc\u63a5 [left, right) \u8303\u56f4\u5185\u7684 words \u7ec4\u6210\u7684\u5b57\u7b26\u4e32\n    string join(vector&lt;string&gt;&amp; words, int left, int right, string sep) {\n        string s = words[left];\n        for (int i = left + 1; i &lt; right; ++i) {\n            s += sep + words[i];\n        }\n        return s;\n    }\n\npublic:\n    vector&lt;string&gt; fullJustify(vector&lt;string&gt;&amp; words, int maxWidth) {\n        vector&lt;string&gt; ans;\n        int right = 0, n = words.size();\n        while (true) {\n            int left = right; \/\/ \u5f53\u524d\u884c\u7684\u7b2c\u4e00\u4e2a\u5355\u8bcd\u5728 words \u7684\u4f4d\u7f6e\n            int sumLen = 0; \/\/ \u7edf\u8ba1\u8fd9\u4e00\u884c\u5355\u8bcd\u957f\u5ea6\u4e4b\u548c\n            \/\/ \u5faa\u73af\u786e\u5b9a\u5f53\u524d\u884c\u53ef\u4ee5\u653e\u591a\u5c11\u5355\u8bcd\uff0c\u6ce8\u610f\u5355\u8bcd\u4e4b\u95f4\u5e94\u81f3\u5c11\u6709\u4e00\u4e2a\u7a7a\u683c\n            while (right &lt; n &amp;&amp; sumLen + words[right].length() + right - left &lt;= maxWidth) {\n                sumLen += words[right++].length();\n            }\n\n            \/\/ \u5f53\u524d\u884c\u662f\u6700\u540e\u4e00\u884c\uff1a\u5355\u8bcd\u5de6\u5bf9\u9f50\uff0c\u4e14\u5355\u8bcd\u4e4b\u95f4\u5e94\u53ea\u6709\u4e00\u4e2a\u7a7a\u683c\uff0c\u5728\u884c\u672b\u586b\u5145\u5269\u4f59\u7a7a\u683c\n            if (right == n) {\n                string s = join(words, left, n, \" \");\n                ans.emplace_back(s + blank(maxWidth - s.length()));\n                return ans;\n            }\n\n            int numWords = right - left;\n            int numSpaces = maxWidth - sumLen;\n\n            \/\/ \u5f53\u524d\u884c\u53ea\u6709\u4e00\u4e2a\u5355\u8bcd\uff1a\u8be5\u5355\u8bcd\u5de6\u5bf9\u9f50\uff0c\u5728\u884c\u672b\u586b\u5145\u5269\u4f59\u7a7a\u683c\n            if (numWords == 1) {\n                ans.emplace_back(words[left] + blank(numSpaces));\n                continue;\n            }\n\n            \/\/ \u5f53\u524d\u884c\u4e0d\u53ea\u4e00\u4e2a\u5355\u8bcd\n            int avgSpaces = numSpaces \/ (numWords - 1);\n            int extraSpaces = numSpaces % (numWords - 1);\n            string s1 = join(words, left, left + extraSpaces + 1, blank(avgSpaces + 1)); \/\/ \u62fc\u63a5\u989d\u5916\u52a0\u4e00\u4e2a\u7a7a\u683c\u7684\u5355\u8bcd\n            string s2 = join(words, left + extraSpaces + 1, right, blank(avgSpaces)); \/\/ \u62fc\u63a5\u5176\u4f59\u5355\u8bcd\n            ans.emplace_back(s1 + blank(avgSpaces) + s2);\n        }\n    }\n};\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: words = [\"This\", \"is\", \"an\", \"example\", \"of\", \"text\", \"justification.\"], maxWidth = 16\n\u8f93\u51fa:\n[\n   \"This    is    an\",\n   \"example  of text\",\n   \"justification.  \"\n]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165:words = [\"What\",\"must\",\"be\",\"acknowledgment\",\"shall\",\"be\"], maxWidth = 16\n\u8f93\u51fa:\n[\n  \"What   must   be\",\n  \"acknowledgment  \",\n  \"shall be        \"\n]\n\u89e3\u91ca: \u6ce8\u610f\u6700\u540e\u4e00\u884c\u7684\u683c\u5f0f\u5e94\u4e3a \"shall be    \" \u800c\u4e0d\u662f \"shall     be\",\n     \u56e0\u4e3a\u6700\u540e\u4e00\u884c\u5e94\u4e3a\u5de6\u5bf9\u9f50\uff0c\u800c\u4e0d\u662f\u5de6\u53f3\u4e24\u7aef\u5bf9\u9f50\u3002       \n     \u7b2c\u4e8c\u884c\u540c\u6837\u4e3a\u5de6\u5bf9\u9f50\uff0c\u8fd9\u662f\u56e0\u4e3a\u8fd9\u884c\u53ea\u5305\u542b\u4e00\u4e2a\u5355\u8bcd\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3:<\/strong><\/p>\n<pre><code>\u8f93\u5165:words = [\"Science\",\"is\",\"what\",\"we\",\"understand\",\"well\",\"enough\",\"to\",\"explain\",\"to\",\"a\",\"computer.\",\"Art\",\"is\",\"everything\",\"else\",\"we\",\"do\"]\uff0cmaxWidth = 20\n\u8f93\u51fa:\n[\n  \"Science  is  what we\",\n  \"understand      well\",\n  \"enough to explain to\",\n  \"a  computer.  Art is\",\n  \"everything  else  we\",\n  \"do                  \"\n]\n<\/code><\/pre>\n<h3 id=\"\u6e05\u9664\u6570\u5b57\">\u6e05\u9664\u6570\u5b57<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-74\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32 <code>s<\/code> \u3002<\/p>\n<p>\u4f60\u7684\u4efb\u52a1\u662f\u91cd\u590d\u4ee5\u4e0b\u64cd\u4f5c\u5220\u9664 <strong>\u6240\u6709<\/strong> \u6570\u5b57\u5b57\u7b26\uff1a<\/p>\n<ul>\n<li>\u5220\u9664 <strong>\u7b2c\u4e00\u4e2a\u6570\u5b57\u5b57\u7b26<\/strong> \u4ee5\u53ca\u5b83\u5de6\u8fb9 <strong>\u6700\u8fd1<\/strong> \u7684 <strong>\u975e\u6570\u5b57<\/strong> \u5b57\u7b26\u3002<\/li>\n<\/ul>\n<p>\u8bf7\u4f60\u8fd4\u56de\u5220\u9664\u6240\u6709\u6570\u5b57\u5b57\u7b26\u4ee5\u540e\u5269\u4e0b\u7684\u5b57\u7b26\u4e32\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-53\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>string\u7adf\u7136\u6709pop_back() \u6da8\u77e5\u8bc6\u4e86<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-74\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    string clearDigits(string s) {\n        string st;\n        for (char c : s) {\n            if (isdigit(c)) {\n                st.pop_back();\n            } else {\n                st += c;\n            }\n        }\n        return st;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><strong>\u8f93\u5165\uff1a<\/strong>s = &#8220;abc&#8221;<\/p>\n<p><strong>\u8f93\u51fa\uff1a<\/strong>&#8220;abc&#8221;<\/p>\n<p><strong>\u89e3\u91ca\uff1a<\/strong><\/p>\n<p>\u5b57\u7b26\u4e32\u4e2d\u6ca1\u6709\u6570\u5b57\u3002<\/p>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><strong>\u8f93\u5165\uff1a<\/strong>s = &#8220;cb34&#8221;<\/p>\n<p><strong>\u8f93\u51fa\uff1a<\/strong>&#8220;&#8221;<\/p>\n<p><strong>\u89e3\u91ca\uff1a<\/strong><\/p>\n<p>\u4e00\u5f00\u59cb\uff0c\u6211\u4eec\u5bf9 <code>s[2]<\/code> \u6267\u884c\u64cd\u4f5c\uff0c<code>s<\/code> \u53d8\u4e3a <code>\"c4\"<\/code> \u3002<\/p>\n<p>\u7136\u540e\u5bf9 <code>s[1]<\/code> \u6267\u884c\u64cd\u4f5c\uff0c<code>s<\/code> \u53d8\u4e3a <code>\"\"<\/code> \u3002<\/p>\n<h2 id=\"\u6ed1\u52a8\u7a97\u53e3\">\u6ed1\u52a8\u7a97\u53e3<\/h2>\n<p><strong>\u8c28\u8bb0\uff1a \u6570\u7ec4\u4e0d\u662f\u5355\u8c03\u7684\u8bdd\uff0c\u4e0d\u8981\u7528\u6ed1\u52a8\u7a97\u53e3\uff0c\u8003\u8651\u7528\u524d\u7f00\u548c<\/strong><\/p>\n<h3 id=\"\u957f\u5ea6\u6700\u5c0f\u7684\u5b50\u6570\u7ec4\">\u957f\u5ea6\u6700\u5c0f\u7684\u5b50\u6570\u7ec4<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-75\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u542b\u6709 <code>n<\/code> \u4e2a\u6b63\u6574\u6570\u7684\u6570\u7ec4\u548c\u4e00\u4e2a\u6b63\u6574\u6570 <code>target<\/code> <strong>\u3002<\/strong><\/p>\n<p>\u627e\u51fa\u8be5\u6570\u7ec4\u4e2d\u6ee1\u8db3\u5176\u603b\u548c\u5927\u4e8e\u7b49\u4e8e <code>target<\/code> \u7684\u957f\u5ea6\u6700\u5c0f\u7684\u5b50\u6570\u7ec4<\/p>\n<p><code>[numsl, numsl+1, ..., numsr-1, numsr]<\/code> \uff0c\u5e76\u8fd4\u56de\u5176\u957f\u5ea6<strong>\u3002<\/strong>\u5982\u679c\u4e0d\u5b58\u5728\u7b26\u5408\u6761\u4ef6\u7684\u5b50\u6570\u7ec4\uff0c\u8fd4\u56de <code>0<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-54\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5b9a\u4e49\u4e24\u4e2a\u6307\u9488 <code>start<\/code>\u548c <code>end<\/code>\u5206\u522b\u8868\u793a\u5b50\u6570\u7ec4\uff08\u6ed1\u52a8\u7a97\u53e3\u7a97\u53e3\uff09\u7684\u5f00\u59cb\u4f4d\u7f6e\u548c\u7ed3\u675f\u4f4d\u7f6e\uff0c\u7ef4\u62a4\u53d8\u91cf sum \u5b58\u50a8\u5b50\u6570\u7ec4\u4e2d\u7684\u5143\u7d20\u548c\uff08\u5373\u4ece <code>nums[start]<\/code>\u5230 <code>nums[end]<\/code>\u7684\u5143\u7d20\u548c\uff09\u3002<\/p>\n<p>\u521d\u59cb\u72b6\u6001\u4e0b\uff0c<code>start<\/code>\u548c <code>end<\/code>\u90fd\u6307\u5411\u4e0b\u6807 0\uff0c<code>sum<\/code> \u7684\u503c\u4e3a 0\u3002<\/p>\n<p>\u6bcf\u4e00\u8f6e\u8fed\u4ee3\uff0c\u5c06 <code>nums[end]<\/code>\u52a0\u5230 <code>sum<\/code>\uff0c\u5982\u679c <code>sum\u2265target<\/code>\uff0c\u5219\u66f4\u65b0\u5b50\u6570\u7ec4\u7684\u6700\u5c0f\u957f\u5ea6\uff08\u6b64\u65f6\u5b50\u6570\u7ec4\u7684\u957f\u5ea6\u662f <code>end\u2212start+1<\/code>\uff09\uff0c\u7136\u540e\u5c06 <code>nums[start]<\/code>\u4ece <code>sum<\/code> \u4e2d\u51cf\u53bb\u5e76\u5c06 <code>start<\/code> \u53f3\u79fb\uff0c\u76f4\u5230 <code>sum&lt;s<\/code>\uff0c\u5728\u6b64\u8fc7\u7a0b\u4e2d\u540c\u6837\u66f4\u65b0\u5b50\u6570\u7ec4\u7684\u6700\u5c0f\u957f\u5ea6\u3002\u5728\u6bcf\u4e00\u8f6e\u8fed\u4ee3\u7684\u6700\u540e\uff0c\u5c06 <code>end<\/code> \u53f3\u79fb\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-75\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int minSubArrayLen(int target, vector&lt;int&gt;&amp; nums) {\n        int n = nums.size();\n        if (n == 0)\n        {\n            return 0;\n        }\n\n        int ans = INT_MAX;\n        int start = 0, end = 0;\n\n        int sum = 0;\n\n        while (end &lt; n)\n        {\n            sum += nums[end];\n            while (sum &gt;= target)\n            {\n                ans = min(ans, end - start + 1);\n                sum -= nums[start];\n                start++;\n            }\n            end++;\n        }\n\n        return ans == INT_MAX ? 0 : ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1atarget = 7, nums = [2,3,1,2,4,3]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1a\u5b50\u6570\u7ec4 [4,3] \u662f\u8be5\u6761\u4ef6\u4e0b\u7684\u957f\u5ea6\u6700\u5c0f\u7684\u5b50\u6570\u7ec4\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1atarget = 4, nums = [1,4,4]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1atarget = 11, nums = [1,1,1,1,1,1,1,1]\n\u8f93\u51fa\uff1a0\n<\/code><\/pre>\n<h3 id=\"\u65e0\u91cd\u590d\u5b57\u7b26\u7684\u6700\u957f\u5b50\u4e32\">\u65e0\u91cd\u590d\u5b57\u7b26\u7684\u6700\u957f\u5b50\u4e32<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-76\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u5b57\u7b26\u4e32 <code>s<\/code> \uff0c\u8bf7\u4f60\u627e\u51fa\u5176\u4e2d\u4e0d\u542b\u6709\u91cd\u590d\u5b57\u7b26\u7684 <strong>\u6700\u957f<\/strong> <strong>\u5b50\u4e32<\/strong> \u7684\u957f\u5ea6\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-55\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5f53\u9047\u5230\u91cd\u590d\u7684\u5b57\u7b26\u65f6\uff0c\u4f1a\u6e05\u7a7a\u6574\u4e2a\u54c8\u5e0c\u8868 <code>sign<\/code> \u5e76\u91cd\u65b0\u586b\u5145\uff0c\u8fd9\u4f1a\u5bfc\u81f4\u5927\u91cf\u7684\u65e0\u6548\u64cd\u4f5c\u3002\u800c\u5728\u8fd9\u4e2a\u89e3\u6cd5\u4e2d\uff0c\u53ea\u4f1a\u5728\u9047\u5230\u91cd\u590d\u5b57\u7b26\u65f6\uff0c\u4ece\u54c8\u5e0c\u96c6\u5408 <code>occ<\/code> \u4e2d\u79fb\u9664\u5de6\u6307\u9488 <code>i<\/code> \u6240\u6307\u5411\u7684\u5b57\u7b26\uff0c\u5e76\u4e14\u53f3\u6307\u9488 <code>rk<\/code> \u4f1a\u6301\u7eed\u5411\u53f3\u79fb\u52a8\uff0c\u76f4\u5230\u9047\u5230\u91cd\u590d\u5b57\u7b26\u4e3a\u6b62\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-76\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    int lengthOfLongestSubstring(string s) {\n        \/\/ \u54c8\u5e0c\u96c6\u5408\uff0c\u8bb0\u5f55\u6bcf\u4e2a\u5b57\u7b26\u662f\u5426\u51fa\u73b0\u8fc7\n        unordered_set&lt;char&gt; occ;\n        int n = s.size();\n        \/\/ \u53f3\u6307\u9488\uff0c\u521d\u59cb\u503c\u4e3a -1\uff0c\u76f8\u5f53\u4e8e\u6211\u4eec\u5728\u5b57\u7b26\u4e32\u7684\u5de6\u8fb9\u754c\u7684\u5de6\u4fa7\uff0c\u8fd8\u6ca1\u6709\u5f00\u59cb\u79fb\u52a8\n        int rk = -1, ans = 0;\n        \/\/ \u679a\u4e3e\u5de6\u6307\u9488\u7684\u4f4d\u7f6e\uff0c\u521d\u59cb\u503c\u9690\u6027\u5730\u8868\u793a\u4e3a -1\n        for (int i = 0; i &lt; n; ++i) {\n            if (i != 0) {\n                \/\/ \u5de6\u6307\u9488\u5411\u53f3\u79fb\u52a8\u4e00\u683c\uff0c\u79fb\u9664\u4e00\u4e2a\u5b57\u7b26\n                occ.erase(s[i - 1]);\n            }\n            while (rk + 1 &lt; n &amp;&amp; !occ.count(s[rk + 1])) {\n                \/\/ \u4e0d\u65ad\u5730\u79fb\u52a8\u53f3\u6307\u9488\n                occ.insert(s[rk + 1]);\n                ++rk;\n            }\n            \/\/ \u7b2c i \u5230 rk \u4e2a\u5b57\u7b26\u662f\u4e00\u4e2a\u6781\u957f\u7684\u65e0\u91cd\u590d\u5b57\u7b26\u5b50\u4e32\n            ans = max(ans, rk - i + 1);\n        }\n        return ans;\n    }\n};\n\n\/\/\u7075\u795e\u5199\u7684\nclass Solution {\npublic:\n    int lengthOfLongestSubstring(string s) {\n        int n = s.length(), ans = 0, left = 0;\n        unordered_set&lt;char&gt; window; \/\/ \u7ef4\u62a4\u4ece\u4e0b\u6807 left \u5230\u4e0b\u6807 right \u7684\u5b57\u7b26\n        for (int right = 0; right &lt; n; right++) {\n            char c = s[right];\n            \/\/ \u5982\u679c\u7a97\u53e3\u5185\u5df2\u7ecf\u5305\u542b c\uff0c\u90a3\u4e48\u518d\u52a0\u5165\u4e00\u4e2a c \u4f1a\u5bfc\u81f4\u7a97\u53e3\u5185\u6709\u91cd\u590d\u5143\u7d20\n            \/\/ \u6240\u4ee5\u8981\u5728\u52a0\u5165 c \u4e4b\u524d\uff0c\u5148\u79fb\u51fa\u7a97\u53e3\u5185\u7684 c\n            while (window.count(c)) { \/\/ \u7a97\u53e3\u5185\u6709 c\n                window.erase(s[left++]); \/\/ \u7f29\u5c0f\u7a97\u53e3\n            }\n            window.insert(c); \/\/ \u52a0\u5165 c\n            ans = max(ans, right - left + 1); \/\/ \u66f4\u65b0\u7a97\u53e3\u957f\u5ea6\u6700\u5927\u503c\n        }\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"abcabcbb\"\n\u8f93\u51fa: 3 \n\u89e3\u91ca: \u56e0\u4e3a\u65e0\u91cd\u590d\u5b57\u7b26\u7684\u6700\u957f\u5b50\u4e32\u662f \"abc\"\uff0c\u6240\u4ee5\u5176\u957f\u5ea6\u4e3a 3\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"bbbbb\"\n\u8f93\u51fa: 1\n\u89e3\u91ca: \u56e0\u4e3a\u65e0\u91cd\u590d\u5b57\u7b26\u7684\u6700\u957f\u5b50\u4e32\u662f \"b\"\uff0c\u6240\u4ee5\u5176\u957f\u5ea6\u4e3a 1\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3:<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"pwwkew\"\n\u8f93\u51fa: 3\n\u89e3\u91ca: \u56e0\u4e3a\u65e0\u91cd\u590d\u5b57\u7b26\u7684\u6700\u957f\u5b50\u4e32\u662f \"wke\"\uff0c\u6240\u4ee5\u5176\u957f\u5ea6\u4e3a 3\u3002\n     \u8bf7\u6ce8\u610f\uff0c\u4f60\u7684\u7b54\u6848\u5fc5\u987b\u662f \u5b50\u4e32 \u7684\u957f\u5ea6\uff0c\"pwke\" \u662f\u4e00\u4e2a\u5b50\u5e8f\u5217\uff0c\u4e0d\u662f\u5b50\u4e32\u3002\n<\/code><\/pre>\n<h3 id=\"\u4e32\u8054\u6240\u6709\u5355\u8bcd\u7684\u5b50\u4e32\">\u4e32\u8054\u6240\u6709\u5355\u8bcd\u7684\u5b50\u4e32<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-77\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u5b57\u7b26\u4e32 <code>s<\/code> \u548c\u4e00\u4e2a\u5b57\u7b26\u4e32\u6570\u7ec4 <code>words<\/code><strong>\u3002<\/strong> <code>words<\/code> \u4e2d\u6240\u6709\u5b57\u7b26\u4e32 <strong>\u957f\u5ea6\u76f8\u540c<\/strong>\u3002<\/p>\n<p><code>s<\/code> \u4e2d\u7684 <strong>\u4e32\u8054\u5b50\u4e32<\/strong> \u662f\u6307\u4e00\u4e2a\u5305\u542b <code>words<\/code> \u4e2d\u6240\u6709\u5b57\u7b26\u4e32\u4ee5\u4efb\u610f\u987a\u5e8f\u6392\u5217\u8fde\u63a5\u8d77\u6765\u7684\u5b50\u4e32\u3002<\/p>\n<ul>\n<li>\u4f8b\u5982\uff0c\u5982\u679c <code>words = [\"ab\",\"cd\",\"ef\"]<\/code>\uff0c \u90a3\u4e48 <code>\"abcdef\"<\/code>\uff0c <code>\"abefcd\"<\/code>\uff0c<code>\"cdabef\"<\/code>\uff0c <code>\"cdefab\"<\/code>\uff0c<code>\"efabcd\"<\/code>\uff0c \u548c <code>\"efcdab\"<\/code> \u90fd\u662f\u4e32\u8054\u5b50\u4e32\u3002 <code>\"acdbef\"<\/code> \u4e0d\u662f\u4e32\u8054\u5b50\u4e32\uff0c\u56e0\u4e3a\u4ed6\u4e0d\u662f\u4efb\u4f55 <code>words<\/code> \u6392\u5217\u7684\u8fde\u63a5\u3002<\/li>\n<\/ul>\n<p>\u8fd4\u56de\u6240\u6709\u4e32\u8054\u5b50\u4e32\u5728 <code>s<\/code> \u4e2d\u7684\u5f00\u59cb\u7d22\u5f15\u3002\u4f60\u53ef\u4ee5\u4ee5 <strong>\u4efb\u610f\u987a\u5e8f<\/strong> \u8fd4\u56de\u7b54\u6848\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-56\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u9996\u5148\u5148\u5224\u65adwords\u662f\u5426\u4e3a\u7a7a,\u5982\u679c\u4e3a\u7a7a\u5219\u76f4\u63a5\u8fd4\u56de\u7b54\u6848<\/p>\n<p>\u63a5\u4e0b\u6765\u6211\u4eec\u4f7f\u7528\u6ed1\u52a8\u7a97\u53e3\u7684\u65b9\u5f0f\u6765\u89e3\u51b3\u6b64\u9898,\u7531\u4e8ewords\u6570\u7ec4\u4e2d\u5404\u4e2a\u5355\u8bcd\u7684\u957f\u5ea6\u90fd\u76f8\u540c,\u56e0\u6b64\u6211\u4eec\u53ef\u4ee5\u9009\u62e9\u5176\u4e2d\u4e00\u4e2a\u5355\u8bcd\u7684\u957f\u5ea6\u4f5c\u4e3a\u6ed1\u52a8\u7684\u957f\u5ea6.<\/p>\n<p>\u5176\u4e2dn\u662f\u5b57\u7b26\u4e32s \u7684\u957f\u5ea6,m\u662fwords\u4e2d\u5355\u8bcd\u7684\u6570\u91cf,w\u662f\u5355\u8bcd\u7684\u957f\u5ea6<\/p>\n<p>\u9996\u5148\u904d\u5386\u7edf\u8ba1words\u4e2d\u5355\u8bcd\u51fa\u73b0\u7684\u6570\u91cf<\/p>\n<p>\u63a5\u7740\u8fdb\u884c\u4e24\u6b21\u904d\u5386<\/p>\n<p>\u5916\u5c42\u5faa\u73af\u4ee5 \u5355\u8bcd\u7684\u957f\u5ea6\u4e3a\u754c\u9650\uff0c\u5185\u5c42\u904d\u5386\u4ee5 \u5b57\u7b26\u4e32\u7684\u957f\u5ea6\u4e3a\u754c\u9650<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-77\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;string&gt;\n#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    vector&lt;int&gt; findSubstring(string s, vector&lt;string&gt;&amp; words) {\n        vector&lt;int&gt; ans;\n        if (words.empty())\n            return ans;\n\n        int n = s.length(), m = words.size(), w = words[0].length();\n\n        unordered_map&lt;string, int&gt; total;\n\n        for (int i = 0; i &lt; words.size(); i++)\n        {\n            total[words[i]]++;\n        }\n\n        for (int i = 0; i &lt; w; i++)\n        {\n            unordered_map&lt;string, int&gt; window;\n            int cnt = 0;\n\n            for (int j = i; j + w &lt;= n; j += w)\n            {\n                if (j - i &gt;= m * w) \n                {\n                    string word = s.substr(j - m * w, w);\n                    window[word]--;\n                    if (window[word] &lt; total[word])\n                    {\n                        cnt--;\n                    }\n                }\n\n                string word = s.substr(j, w);\n                window[word]++;\n                if (window[word] &lt;= total[word])\n                {\n                    cnt++;\n                }\n\n                if (cnt == m)\n                {\n                    ans.push_back(j - (m - 1) * w);\n                }\n            }\n        }\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"barfoothefoobarman\", words = [\"foo\",\"bar\"]\n\u8f93\u51fa\uff1a[0,9]\n\u89e3\u91ca\uff1a\u56e0\u4e3a words.length == 2 \u540c\u65f6 words[i].length == 3\uff0c\u8fde\u63a5\u7684\u5b50\u5b57\u7b26\u4e32\u7684\u957f\u5ea6\u5fc5\u987b\u4e3a 6\u3002\n\u5b50\u4e32 \"barfoo\" \u5f00\u59cb\u4f4d\u7f6e\u662f 0\u3002\u5b83\u662f words \u4e2d\u4ee5 [\"bar\",\"foo\"] \u987a\u5e8f\u6392\u5217\u7684\u8fde\u63a5\u3002\n\u5b50\u4e32 \"foobar\" \u5f00\u59cb\u4f4d\u7f6e\u662f 9\u3002\u5b83\u662f words \u4e2d\u4ee5 [\"foo\",\"bar\"] \u987a\u5e8f\u6392\u5217\u7684\u8fde\u63a5\u3002\n\u8f93\u51fa\u987a\u5e8f\u65e0\u5173\u7d27\u8981\u3002\u8fd4\u56de [9,0] \u4e5f\u662f\u53ef\u4ee5\u7684\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"wordgoodgoodgoodbestword\", words = [\"word\",\"good\",\"best\",\"word\"]\n\u8f93\u51fa\uff1a[]\n\u89e3\u91ca\uff1a\u56e0\u4e3a words.length == 4 \u5e76\u4e14 words[i].length == 4\uff0c\u6240\u4ee5\u4e32\u8054\u5b50\u4e32\u7684\u957f\u5ea6\u5fc5\u987b\u4e3a 16\u3002\ns \u4e2d\u6ca1\u6709\u5b50\u4e32\u957f\u5ea6\u4e3a 16 \u5e76\u4e14\u7b49\u4e8e words \u7684\u4efb\u4f55\u987a\u5e8f\u6392\u5217\u7684\u8fde\u63a5\u3002\n\u6240\u4ee5\u6211\u4eec\u8fd4\u56de\u4e00\u4e2a\u7a7a\u6570\u7ec4\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"barfoofoobarthefoobarman\", words = [\"bar\",\"foo\",\"the\"]\n\u8f93\u51fa\uff1a[6,9,12]\n\u89e3\u91ca\uff1a\u56e0\u4e3a words.length == 3 \u5e76\u4e14 words[i].length == 3\uff0c\u6240\u4ee5\u4e32\u8054\u5b50\u4e32\u7684\u957f\u5ea6\u5fc5\u987b\u4e3a 9\u3002\n\u5b50\u4e32 \"foobarthe\" \u5f00\u59cb\u4f4d\u7f6e\u662f 6\u3002\u5b83\u662f words \u4e2d\u4ee5 [\"foo\",\"bar\",\"the\"] \u987a\u5e8f\u6392\u5217\u7684\u8fde\u63a5\u3002\n\u5b50\u4e32 \"barthefoo\" \u5f00\u59cb\u4f4d\u7f6e\u662f 9\u3002\u5b83\u662f words \u4e2d\u4ee5 [\"bar\",\"the\",\"foo\"] \u987a\u5e8f\u6392\u5217\u7684\u8fde\u63a5\u3002\n\u5b50\u4e32 \"thefoobar\" \u5f00\u59cb\u4f4d\u7f6e\u662f 12\u3002\u5b83\u662f words \u4e2d\u4ee5 [\"the\",\"foo\",\"bar\"] \u987a\u5e8f\u6392\u5217\u7684\u8fde\u63a5\u3002\n<\/code><\/pre>\n<h3 id=\"\u6700\u5c0f\u8986\u76d6\u5b50\u4e32\">\u6700\u5c0f\u8986\u76d6\u5b50\u4e32<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-78\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32 <code>s<\/code> \u3001\u4e00\u4e2a\u5b57\u7b26\u4e32 <code>t<\/code> \u3002\u8fd4\u56de <code>s<\/code> \u4e2d\u6db5\u76d6 <code>t<\/code> \u6240\u6709\u5b57\u7b26\u7684\u6700\u5c0f\u5b50\u4e32\u3002\u5982\u679c <code>s<\/code> \u4e2d\u4e0d\u5b58\u5728\u6db5\u76d6 <code>t<\/code> \u6240\u6709\u5b57\u7b26\u7684\u5b50\u4e32\uff0c\u5219\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32 <code>\"\"<\/code> \u3002<\/p>\n<p><strong>\u6ce8\u610f\uff1a<\/strong><\/p>\n<ul>\n<li>\u5bf9\u4e8e <code>t<\/code> \u4e2d\u91cd\u590d\u5b57\u7b26\uff0c\u6211\u4eec\u5bfb\u627e\u7684\u5b50\u5b57\u7b26\u4e32\u4e2d\u8be5\u5b57\u7b26\u6570\u91cf\u5fc5\u987b\u4e0d\u5c11\u4e8e <code>t<\/code> \u4e2d\u8be5\u5b57\u7b26\u6570\u91cf\u3002<\/li>\n<li>\u5982\u679c <code>s<\/code> \u4e2d\u5b58\u5728\u8fd9\u6837\u7684\u5b50\u4e32\uff0c\u6211\u4eec\u4fdd\u8bc1\u5b83\u662f\u552f\u4e00\u7684\u7b54\u6848\u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-57\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>1.\u5148\u521b\u5efa\u4e24\u4e2a\u54c8\u5e0c\u8868\uff0c\u7528\u6765\u7edf\u8ba1\u4e24\u4e2a\u5b57\u7b26\u4e32\u4e2d\u5b57\u7b26\u51fa\u73b0\u7684\u6b21\u6570<\/p>\n<p>2.\u518d\u5c06\u8981\u8986\u76d6\u7684\u5b57\u7b26\u4e32t\uff0c\u5b58\u5165\u54c8\u5e0c\u8868t_num<br \/>\n3.\u8bbe\u7f6epos\u548cminLen\uff0c\u7528\u6765\u8bb0\u5f55\u5b50\u4e32\u7684\u521d\u59cb\u4f4d\u7f6e\u548c\u6700\u5c0f\u957f\u5ea6(\u8fd9\u6b65\u5f88\u5173\u952e\uff0c\u6211\u4eec\u53ef\u4ee5\u7b49\u5faa\u73af\u7ed3\u675f\u518d\u62f7\u8d1d\u5b50\u4e32\uff0c\u800c\u4e0d\u662f\u5faa\u73af\u4e2d\uff0c\u51cf\u5c11\u4e86\u5f88\u591a\u65f6\u95f4\u5f00\u9500)<br \/>\n4.\u5176\u6b21\u8bbe\u7f6ecount\uff0c\u7528\u6765\u8bb0\u5f55s_num\u4e2d\u7684\u6709\u6548\u5b57\u7b26\u4e2a\u6570(\u8fd9\u6b65\u4f18\u5316\uff0c\u53ef\u4ee5\u8ba9\u6211\u4eec\u4e0d\u7528\u6bcf\u6b21\u90fd&#8211;\u6bd4\u8f83\u4e24\u4e2a\u54c8\u5e0c\u8868\uff0c\u800c\u662f\u6bd4\u8f83count\u662f\u5426\u8fbe\u5230t\u7684\u6709\u6548\u5b57\u7b26\u4e2a\u6570)<\/p>\n<p>5.\u63a5\u4e0b\u6765\uff0c\u662f\u6b63\u5e38\u7684\u6ed1\u52a8\u7a97\u53e3\u56db\u6b65\u8d70<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-78\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;string&gt;\n#include &lt;unordered_map&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    string minWindow(string s, string t) {\n        int n = s.length();\n        int m = t.length();\n        string ans;\n\n        if (n &lt; m)\n        {\n            return \"\";\n        }\n\n        unordered_map&lt;char, int&gt; t_num,s_num;\n        for (auto word : t)\n        {\n            t_num[word]++;\n        }\n\n        int pos = 0, minlen = INT_MAX;\n        int left = 0, right = 0;\n        int count = 0;\n\n        while (right &lt; n)\n        {\n            char in = s[right++];\n            if (++s_num[in] &lt;= t_num[in])\n            {\n                ++count;\n            }\n\n            while (count == m)\n            {\n                if (right - left &lt; minlen)\n                {\n                    pos = left;\n                    minlen = right - left;\n\n                }\n\n                char out = s[left++];\n                if (s_num[out]-- &lt;= t_num[out])\n                {\n                    --count;\n                }\n            }\n\n        }\n\n        return minlen == INT_MAX ? \"\" : s.substr(pos, minlen);\n    }\n};\n\n\/\/\u7075\u795e\u7684\u65b9\u6cd5\nclass Solution {\n    bool is_covered(int cnt_s[], int cnt_t[]) {\n        for (int i = 'A'; i &lt;= 'Z'; i++) {\n            if (cnt_s[i] &lt; cnt_t[i]) {\n                return false;\n            }\n        }\n        for (int i = 'a'; i &lt;= 'z'; i++) {\n            if (cnt_s[i] &lt; cnt_t[i]) {\n                return false;\n            }\n        }\n        return true;\n    }\n\npublic:\n    string minWindow(string s, string t) {\n        int m = s.length();\n        int ans_left = -1, ans_right = m, left = 0;\n        int cnt_s[128]{}, cnt_t[128]{};\n        for (char c : t) {\n            cnt_t[c]++;\n        }\n        for (int right = 0; right &lt; m; right++) { \/\/ \u79fb\u52a8\u5b50\u4e32\u53f3\u7aef\u70b9\n            cnt_s[s[right]]++; \/\/ \u53f3\u7aef\u70b9\u5b57\u6bcd\u79fb\u5165\u5b50\u4e32\n            while (is_covered(cnt_s, cnt_t)) { \/\/ \u6db5\u76d6\n                if (right - left &lt; ans_right - ans_left) { \/\/ \u627e\u5230\u66f4\u77ed\u7684\u5b50\u4e32\n                    ans_left = left; \/\/ \u8bb0\u5f55\u6b64\u65f6\u7684\u5de6\u53f3\u7aef\u70b9\n                    ans_right = right;\n                }\n                cnt_s[s[left++]]--; \/\/ \u5de6\u7aef\u70b9\u5b57\u6bcd\u79fb\u51fa\u5b50\u4e32\n            }\n        }\n        return ans_left &lt; 0 ? \"\" : s.substr(ans_left, ans_right - ans_left + 1);\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"ADOBECODEBANC\", t = \"ABC\"\n\u8f93\u51fa\uff1a\"BANC\"\n\u89e3\u91ca\uff1a\u6700\u5c0f\u8986\u76d6\u5b50\u4e32 \"BANC\" \u5305\u542b\u6765\u81ea\u5b57\u7b26\u4e32 t \u7684 'A'\u3001'B' \u548c 'C'\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"a\", t = \"a\"\n\u8f93\u51fa\uff1a\"a\"\n\u89e3\u91ca\uff1a\u6574\u4e2a\u5b57\u7b26\u4e32 s \u662f\u6700\u5c0f\u8986\u76d6\u5b50\u4e32\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3:<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"a\", t = \"aa\"\n\u8f93\u51fa: \"\"\n\u89e3\u91ca: t \u4e2d\u4e24\u4e2a\u5b57\u7b26 'a' \u5747\u5e94\u5305\u542b\u5728 s \u7684\u5b50\u4e32\u4e2d\uff0c\n\u56e0\u6b64\u6ca1\u6709\u7b26\u5408\u6761\u4ef6\u7684\u5b50\u5b57\u7b26\u4e32\uff0c\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\u3002\n<\/code><\/pre>\n<h3 id=\"\u627e\u5230\u5b57\u7b26\u4e32\u4e2d\u7684\u6240\u6709\u5b57\u6bcd\u5f02\u4f4d\u8bcd\">\u627e\u5230\u5b57\u7b26\u4e32\u4e2d\u7684\u6240\u6709\u5b57\u6bcd\u5f02\u4f4d\u8bcd<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-79\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e24\u4e2a\u5b57\u7b26\u4e32 <code>s<\/code> \u548c <code>p<\/code>\uff0c\u627e\u5230 <code>s<\/code> \u4e2d\u6240\u6709 <code>p<\/code> \u7684 <strong>\u5f02\u4f4d\u8bcd<\/strong> \u7684\u5b50\u4e32\uff0c\u8fd4\u56de\u8fd9\u4e9b\u5b50\u4e32\u7684\u8d77\u59cb\u7d22\u5f15\u3002\u4e0d\u8003\u8651\u7b54\u6848\u8f93\u51fa\u7684\u987a\u5e8f\u3002<\/p>\n<p><strong>\u5f02\u4f4d\u8bcd<\/strong> \u6307\u7531\u76f8\u540c\u5b57\u6bcd\u91cd\u6392\u5217\u5f62\u6210\u7684\u5b57\u7b26\u4e32\uff08\u5305\u62ec\u76f8\u540c\u7684\u5b57\u7b26\u4e32\uff09\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-58\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-79\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    vector&lt;int&gt; findAnagrams(string s, string p) {\n        int sLen = s.size(), pLen = p.size();\n\n        if (sLen &lt; pLen) {\n            return vector&lt;int&gt;();\n        }\n\n        vector&lt;int&gt; ans;\n        vector&lt;int&gt; sCount(26);\n        vector&lt;int&gt; pCount(26);\n        for (int i = 0; i &lt; pLen; ++i) {\n            ++sCount[s[i] - 'a'];\n            ++pCount[p[i] - 'a'];\n        }\n\n        if (sCount == pCount) {\n            ans.emplace_back(0);\n        }\n\n        for (int i = 0; i &lt; sLen - pLen; ++i) {\n            --sCount[s[i] - 'a'];\n            ++sCount[s[i + pLen] - 'a'];\n\n            if (sCount == pCount) {\n                ans.emplace_back(i + 1);\n            }\n        }\n\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"cbaebabacd\", p = \"abc\"\n\u8f93\u51fa: [0,6]\n\u89e3\u91ca:\n\u8d77\u59cb\u7d22\u5f15\u7b49\u4e8e 0 \u7684\u5b50\u4e32\u662f \"cba\", \u5b83\u662f \"abc\" \u7684\u5f02\u4f4d\u8bcd\u3002\n\u8d77\u59cb\u7d22\u5f15\u7b49\u4e8e 6 \u7684\u5b50\u4e32\u662f \"bac\", \u5b83\u662f \"abc\" \u7684\u5f02\u4f4d\u8bcd\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"abab\", p = \"ab\"\n\u8f93\u51fa: [0,1,2]\n\u89e3\u91ca:\n\u8d77\u59cb\u7d22\u5f15\u7b49\u4e8e 0 \u7684\u5b50\u4e32\u662f \"ab\", \u5b83\u662f \"ab\" \u7684\u5f02\u4f4d\u8bcd\u3002\n\u8d77\u59cb\u7d22\u5f15\u7b49\u4e8e 1 \u7684\u5b50\u4e32\u662f \"ba\", \u5b83\u662f \"ab\" \u7684\u5f02\u4f4d\u8bcd\u3002\n\u8d77\u59cb\u7d22\u5f15\u7b49\u4e8e 2 \u7684\u5b50\u4e32\u662f \"ab\", \u5b83\u662f \"ab\" \u7684\u5f02\u4f4d\u8bcd\u3002\n<\/code><\/pre>\n<h3 id=\"\u6ed1\u52a8\u7a97\u53e3\u6700\u5927\u503c\">\u6ed1\u52a8\u7a97\u53e3\u6700\u5927\u503c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-80\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code>\uff0c\u6709\u4e00\u4e2a\u5927\u5c0f\u4e3a <code>k<\/code> \u7684\u6ed1\u52a8\u7a97\u53e3\u4ece\u6570\u7ec4\u7684\u6700\u5de6\u4fa7\u79fb\u52a8\u5230\u6570\u7ec4\u7684\u6700\u53f3\u4fa7\u3002\u4f60\u53ea\u53ef\u4ee5\u770b\u5230\u5728\u6ed1\u52a8\u7a97\u53e3\u5185\u7684 <code>k<\/code> \u4e2a\u6570\u5b57\u3002\u6ed1\u52a8\u7a97\u53e3\u6bcf\u6b21\u53ea\u5411\u53f3\u79fb\u52a8\u4e00\u4f4d\u3002<\/p>\n<p>\u8fd4\u56de <em>\u6ed1\u52a8\u7a97\u53e3\u4e2d\u7684\u6700\u5927\u503c<\/em> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-59\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-80\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    vector&lt;int&gt; maxSlidingWindow(vector&lt;int&gt;&amp; nums, int k) {\n        vector&lt;int&gt; ans;\n        deque&lt;int&gt; q; \/\/ \u53cc\u7aef\u961f\u5217\n        for (int i = 0; i &lt; nums.size(); i++) {\n            \/\/ 1. \u5165\n            while (!q.empty() &amp;&amp; nums[q.back()] &lt;= nums[i]) {\n                q.pop_back(); \/\/ \u7ef4\u62a4 q \u7684\u5355\u8c03\u6027\n            }\n            q.push_back(i); \/\/ \u5165\u961f\n            \/\/ 2. \u51fa\n            if (i - q.front() &gt;= k) { \/\/ \u961f\u9996\u5df2\u7ecf\u79bb\u5f00\u7a97\u53e3\u4e86\n                q.pop_front();\n            }\n            \/\/ 3. \u8bb0\u5f55\u7b54\u6848\n            if (i &gt;= k - 1) {\n                \/\/ \u7531\u4e8e\u961f\u9996\u5230\u961f\u5c3e\u5355\u8c03\u9012\u51cf\uff0c\u6240\u4ee5\u7a97\u53e3\u6700\u5927\u503c\u5c31\u662f\u961f\u9996\n                ans.push_back(nums[q.front()]);\n            }\n        }\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,3,-1,-3,5,3,6,7], k = 3\n\u8f93\u51fa\uff1a[3,3,5,5,6,7]\n\u89e3\u91ca\uff1a\n\u6ed1\u52a8\u7a97\u53e3\u7684\u4f4d\u7f6e                \u6700\u5927\u503c\n---------------               -----\n[1  3  -1] -3  5  3  6  7       3\n 1 [3  -1  -3] 5  3  6  7       3\n 1  3 [-1  -3  5] 3  6  7       5\n 1  3  -1 [-3  5  3] 6  7       5\n 1  3  -1  -3 [5  3  6] 7       6\n 1  3  -1  -3  5 [3  6  7]      7\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1], k = 1\n\u8f93\u51fa\uff1a[1]\n<\/code><\/pre>\n<h2 id=\"\u77e9\u9635\">\u77e9\u9635<\/h2>\n<h3 id=\"\u6709\u6548\u7684\u6570\u72ec\">\u6709\u6548\u7684\u6570\u72ec<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-81\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u8bf7\u4f60\u5224\u65ad\u4e00\u4e2a <code>9 x 9<\/code> \u7684\u6570\u72ec\u662f\u5426\u6709\u6548\u3002\u53ea\u9700\u8981 <strong>\u6839\u636e\u4ee5\u4e0b\u89c4\u5219<\/strong> \uff0c\u9a8c\u8bc1\u5df2\u7ecf\u586b\u5165\u7684\u6570\u5b57\u662f\u5426\u6709\u6548\u5373\u53ef\u3002<\/p>\n<ol start=\"\">\n<li>\u6570\u5b57 <code>1-9<\/code> \u5728\u6bcf\u4e00\u884c\u53ea\u80fd\u51fa\u73b0\u4e00\u6b21\u3002<\/li>\n<li>\u6570\u5b57 <code>1-9<\/code> \u5728\u6bcf\u4e00\u5217\u53ea\u80fd\u51fa\u73b0\u4e00\u6b21\u3002<\/li>\n<li>\u6570\u5b57 <code>1-9<\/code> \u5728\u6bcf\u4e00\u4e2a\u4ee5\u7c97\u5b9e\u7ebf\u5206\u9694\u7684 <code>3x3<\/code> \u5bab\u5185\u53ea\u80fd\u51fa\u73b0\u4e00\u6b21\u3002\uff08\u8bf7\u53c2\u8003\u793a\u4f8b\u56fe\uff09<\/li>\n<\/ol>\n<p><strong>\u6ce8\u610f\uff1a<\/strong><\/p>\n<ul>\n<li>\u4e00\u4e2a\u6709\u6548\u7684\u6570\u72ec\uff08\u90e8\u5206\u5df2\u88ab\u586b\u5145\uff09\u4e0d\u4e00\u5b9a\u662f\u53ef\u89e3\u7684\u3002<\/li>\n<li>\u53ea\u9700\u8981\u6839\u636e\u4ee5\u4e0a\u89c4\u5219\uff0c\u9a8c\u8bc1\u5df2\u7ecf\u586b\u5165\u7684\u6570\u5b57\u662f\u5426\u6709\u6548\u5373\u53ef\u3002<\/li>\n<li>\u7a7a\u767d\u683c\u7528 <code>'.'<\/code> \u8868\u793a\u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-60\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5206\u522b\u8ba1\u7b97\u6bcf\u4e00\u884c,\u6bcf\u4e00\u5217,\u548c\u6bcf\u4e00\u5c0f\u4e5d\u5bab\u683c\u4e2d,\u6570\u5b57\u51fa\u73b0\u7684\u6b21\u6570<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-81\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;iostream&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    bool isValidSudoku(vector&lt;vector&lt;char&gt;&gt;&amp; board) {\n        int rows[9][9];\n        int column[9][9];\n        int subboxes[3][3][9];\n\n        memset(rows, 0, sizeof(rows));\n        memset(column, 0, sizeof(column));\n        memset(subboxes, 0, sizeof(subboxes));\n\n        for (int i = 0; i &lt; 9; i++)\n        {\n            for (int j = 0; j &lt; 9; j++)\n            {\n\n                char c = board[i][j];\n\n                if (c != '.')\n                {\n\n                    int index= c - '0' - 1;\n                    rows[i][index]++;\n                    column[j][index]++;\n                    subboxes[i \/ 3][j \/ 3][index]++;\n                    if (rows[i][index] &gt; 1 || column[j][index] &gt; 1 || subboxes[i \/ 3][j \/ 3][index] &gt; 1)\n                        return false;\n                }\n            }\n        }\n\n        return true;\n    }\n};\n\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2021\/04\/12\/250px-sudoku-by-l2g-20050714svg.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2021\/04\/12\/250px-sudoku-by-l2g-20050714svg.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aboard = \n[[\"5\",\"3\",\".\",\".\",\"7\",\".\",\".\",\".\",\".\"]\n,[\"6\",\".\",\".\",\"1\",\"9\",\"5\",\".\",\".\",\".\"]\n,[\".\",\"9\",\"8\",\".\",\".\",\".\",\".\",\"6\",\".\"]\n,[\"8\",\".\",\".\",\".\",\"6\",\".\",\".\",\".\",\"3\"]\n,[\"4\",\".\",\".\",\"8\",\".\",\"3\",\".\",\".\",\"1\"]\n,[\"7\",\".\",\".\",\".\",\"2\",\".\",\".\",\".\",\"6\"]\n,[\".\",\"6\",\".\",\".\",\".\",\".\",\"2\",\"8\",\".\"]\n,[\".\",\".\",\".\",\"4\",\"1\",\"9\",\".\",\".\",\"5\"]\n,[\".\",\".\",\".\",\".\",\"8\",\".\",\".\",\"7\",\"9\"]]\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aboard = \n[[\"8\",\"3\",\".\",\".\",\"7\",\".\",\".\",\".\",\".\"]\n,[\"6\",\".\",\".\",\"1\",\"9\",\"5\",\".\",\".\",\".\"]\n,[\".\",\"9\",\"8\",\".\",\".\",\".\",\".\",\"6\",\".\"]\n,[\"8\",\".\",\".\",\".\",\"6\",\".\",\".\",\".\",\"3\"]\n,[\"4\",\".\",\".\",\"8\",\".\",\"3\",\".\",\".\",\"1\"]\n,[\"7\",\".\",\".\",\".\",\"2\",\".\",\".\",\".\",\"6\"]\n,[\".\",\"6\",\".\",\".\",\".\",\".\",\"2\",\"8\",\".\"]\n,[\".\",\".\",\".\",\"4\",\"1\",\"9\",\".\",\".\",\"5\"]\n,[\".\",\".\",\".\",\".\",\"8\",\".\",\".\",\"7\",\"9\"]]\n\u8f93\u51fa\uff1afalse\n\u89e3\u91ca\uff1a\u9664\u4e86\u7b2c\u4e00\u884c\u7684\u7b2c\u4e00\u4e2a\u6570\u5b57\u4ece 5 \u6539\u4e3a 8 \u4ee5\u5916\uff0c\u7a7a\u683c\u5185\u5176\u4ed6\u6570\u5b57\u5747\u4e0e \u793a\u4f8b1 \u76f8\u540c\u3002 \u4f46\u7531\u4e8e\u4f4d\u4e8e\u5de6\u4e0a\u89d2\u7684 3x3 \u5bab\u5185\u6709\u4e24\u4e2a 8 \u5b58\u5728, \u56e0\u6b64\u8fd9\u4e2a\u6570\u72ec\u662f\u65e0\u6548\u7684\u3002\n<\/code><\/pre>\n<h3 id=\"\u87ba\u65cb\u77e9\u9635\">\u87ba\u65cb\u77e9\u9635<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-82\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a <code>m<\/code> \u884c <code>n<\/code> \u5217\u7684\u77e9\u9635 <code>matrix<\/code> \uff0c\u8bf7\u6309\u7167 <strong>\u987a\u65f6\u9488\u87ba\u65cb\u987a\u5e8f<\/strong> \uff0c\u8fd4\u56de\u77e9\u9635\u4e2d\u7684\u6240\u6709\u5143\u7d20\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-61\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u601d\u8def\u5f88\u6e05\u6670,\u770b\u4ee3\u7801\u5373\u53ef<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-82\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;int&gt; spiralOrder(vector&lt;vector&lt;int&gt;&gt;&amp; matrix) {\n\n        vector&lt;int&gt; ans;\n\n        int up = 0;\n        int down = matrix.size() - 1;\n\n        int left = 0;\n        int right = matrix[0].size() - 1;\n\n        while (1)\n        {\n            for (int i = left; i &lt;= right; i++)\n            {\n                ans.push_back(matrix[up][i]);\n            }\n\n            if (++up &gt; down) break;\n\n            for (int i = up; i &lt;= down; i++)\n            {\n                ans.push_back(matrix[i][right]);\n            }\n\n            if (--right &lt; left) break;\n\n            for (int i = right; i &gt;= left; i--)\n            {\n                ans.push_back(matrix[down][i]);\n            }\n\n            if (--down &lt; up) break;\n\n            for (int i = down; i &gt;= up; i--)\n            {\n                ans.push_back(matrix[i][left]);\n            }\n\n            if (++left &gt; right) break;\n        }\n\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/13\/spiral1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/13\/spiral1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1amatrix = [[1,2,3],[4,5,6],[7,8,9]]\n\u8f93\u51fa\uff1a[1,2,3,6,9,8,7,4,5]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/13\/spiral.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/13\/spiral.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1amatrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]\n\u8f93\u51fa\uff1a[1,2,3,4,8,12,11,10,9,5,6,7]\n<\/code><\/pre>\n<h3 id=\"\u65cb\u8f6c\u56fe\u50cf\">\u65cb\u8f6c\u56fe\u50cf<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-83\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a <em>n<\/em> \u00d7 <em>n<\/em> \u7684\u4e8c\u7ef4\u77e9\u9635 <code>matrix<\/code> \u8868\u793a\u4e00\u4e2a\u56fe\u50cf\u3002\u8bf7\u4f60\u5c06\u56fe\u50cf\u987a\u65f6\u9488\u65cb\u8f6c 90 \u5ea6\u3002<\/p>\n<p>\u4f60\u5fc5\u987b\u5728 \u539f\u5730\u65cb\u8f6c\u56fe\u50cf\uff0c\u8fd9\u610f\u5473\u7740\u4f60\u9700\u8981\u76f4\u63a5\u4fee\u6539\u8f93\u5165\u7684\u4e8c\u7ef4\u77e9\u9635\u3002<strong>\u8bf7\u4e0d\u8981<\/strong> \u4f7f\u7528\u53e6\u4e00\u4e2a\u77e9\u9635\u6765\u65cb\u8f6c\u56fe\u50cf\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-62\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u4e00\u4e2a\u662f\u5faa\u73af\u56db\u6b21,\u4f7f\u5f97\u901a\u8fc7\u4e00\u6b21\u4e34\u65f6\u53d8\u91cf\u5c31\u53ef\u4ee5\u5b9e\u73b0\u5168\u90e8\u7684\u65cb\u8f6c<\/p>\n<p>\u4e00\u4e2a\u662f\u5148\u6c34\u5e73\u53cd\u8f6c,\u7136\u540e\u518d\u5bf9\u89d2\u7ebf\u7ffb\u8f6c<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-83\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\n\nusing namespace std;\n\nclass Solution {\npublic:\n    void rotate(vector&lt;vector&lt;int&gt;&gt;&amp; matrix) {\n        int n = matrix.size();\n        \/\/ \u6c34\u5e73\u7ffb\u8f6c\n        for (int i = 0; i &lt; n \/ 2; ++i) {\n            for (int j = 0; j &lt; n; ++j) {\n                swap(matrix[i][j], matrix[n - i - 1][j]);\n            }\n        }\n        \/\/ \u4e3b\u5bf9\u89d2\u7ebf\u7ffb\u8f6c\n        for (int i = 0; i &lt; n; ++i) {\n            for (int j = 0; j &lt; i; ++j) {\n                swap(matrix[i][j], matrix[j][i]);\n            }\n        }\n    }\n};\n\n\nclass Solution {\npublic:\n    void rotate(vector&lt;vector&lt;int&gt;&gt;&amp; matrix) {\n        int n = matrix.size();\n        for (int i = 0; i &lt; n \/ 2; ++i) {\n            for (int j = 0; j &lt; (n + 1) \/ 2; ++j) {\n                int temp = matrix[i][j];\n                matrix[i][j] = matrix[n - j - 1][i];\n                matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1];\n                matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1];\n                matrix[j][n - i - 1] = temp;\n            }\n        }\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/08\/28\/mat1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/08\/28\/mat1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1amatrix = [[1,2,3],[4,5,6],[7,8,9]]\n\u8f93\u51fa\uff1a[[7,4,1],[8,5,2],[9,6,3]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/08\/28\/mat2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/08\/28\/mat2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1amatrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]\n\u8f93\u51fa\uff1a[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]\n<\/code><\/pre>\n<h3 id=\"\u77e9\u9635\u7f6e\u96f6\">\u77e9\u9635\u7f6e\u96f6<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-84\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a <code>*m* x *n*<\/code> \u7684\u77e9\u9635\uff0c\u5982\u679c\u4e00\u4e2a\u5143\u7d20\u4e3a <strong>0<\/strong> \uff0c\u5219\u5c06\u5176\u6240\u5728\u884c\u548c\u5217\u7684\u6240\u6709\u5143\u7d20\u90fd\u8bbe\u4e3a <strong>0<\/strong> \u3002\u8bf7\u4f7f\u7528 <strong><a href=\"http:\/\/baike.baidu.com\/item\/\u539f\u5730\u7b97\u6cd5\">\u539f\u5730<\/a><\/strong> \u7b97\u6cd5<strong>\u3002<\/strong><\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-63\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u65b9\u6cd5\u4e00 :\u5c06\u4e3a0\u7684\u5143\u7d20\u8fdb\u884c\u6807\u8bb0,\u5728\u7b2c\u4e8c\u6b21\u904d\u5386\u8fdb\u884c\u4fee\u6539<\/p>\n<p>\u65b9\u6cd5\u4e8c<\/p>\n<p>\u6211\u4eec\u53ef\u4ee5\u7528\u77e9\u9635\u7684\u7b2c\u4e00\u884c\u548c\u7b2c\u4e00\u5217\u4ee3\u66ff\u65b9\u6cd5\u4e00\u4e2d\u7684\u4e24\u4e2a\u6807\u8bb0\u6570\u7ec4\uff0c\u4ee5\u8fbe\u5230 O(1) \u7684\u989d\u5916\u7a7a\u95f4\u3002\u4f46\u8fd9\u6837\u4f1a\u5bfc\u81f4\u539f\u6570\u7ec4\u7684\u7b2c\u4e00\u884c\u548c\u7b2c\u4e00\u5217\u88ab\u4fee\u6539\uff0c\u65e0\u6cd5\u8bb0\u5f55\u5b83\u4eec\u662f\u5426\u539f\u672c\u5305\u542b 0\u3002\u56e0\u6b64\u6211\u4eec\u9700\u8981\u989d\u5916\u4f7f\u7528\u4e24\u4e2a\u6807\u8bb0\u53d8\u91cf\u5206\u522b\u8bb0\u5f55\u7b2c\u4e00\u884c\u548c\u7b2c\u4e00\u5217\u662f\u5426\u539f\u672c\u5305\u542b 0\u3002<\/p>\n<p>\u5728\u5b9e\u9645\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u9996\u5148\u9884\u5904\u7406\u51fa\u4e24\u4e2a\u6807\u8bb0\u53d8\u91cf\uff0c\u63a5\u7740\u4f7f\u7528\u5176\u4ed6\u884c\u4e0e\u5217\u53bb\u5904\u7406\u7b2c\u4e00\u884c\u4e0e\u7b2c\u4e00\u5217\uff0c\u7136\u540e\u53cd\u8fc7\u6765\u4f7f\u7528\u7b2c\u4e00\u884c\u4e0e\u7b2c\u4e00\u5217\u53bb\u66f4\u65b0\u5176\u4ed6\u884c\u4e0e\u5217\uff0c\u6700\u540e\u4f7f\u7528\u4e24\u4e2a\u6807\u8bb0\u53d8\u91cf\u66f4\u65b0\u7b2c\u4e00\u884c\u4e0e\u7b2c\u4e00\u5217\u5373\u53ef\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-84\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    void setZeroes(vector&lt;vector&lt;int&gt;&gt;&amp; matrix) {\n        int m = matrix.size();\n        int n = matrix[0].size();\n        vector&lt;int&gt; row(m), col(n);\n        for (int i = 0; i &lt; m; i++) {\n            for (int j = 0; j &lt; n; j++) {\n                if (!matrix[i][j]) {\n                    row[i] = col[j] = true;\n                }\n            }\n        }\n        for (int i = 0; i &lt; m; i++) {\n            for (int j = 0; j &lt; n; j++) {\n                if (row[i] || col[j]) {\n                    matrix[i][j] = 0;\n                }\n            }\n        }\n    }\n};\n\nclass Solution {\npublic:\n    void setZeroes(vector&lt;vector&lt;int&gt;&gt;&amp; matrix) {\n        int m = matrix.size();\n        int n = matrix[0].size();\n        int flag_col0 = false, flag_row0 = false;\n        for (int i = 0; i &lt; m; i++) {\n            if (!matrix[i][0]) {\n                flag_col0 = true;\n            }\n        }\n        for (int j = 0; j &lt; n; j++) {\n            if (!matrix[0][j]) {\n                flag_row0 = true;\n            }\n        }\n        for (int i = 1; i &lt; m; i++) {\n            for (int j = 1; j &lt; n; j++) {\n                if (!matrix[i][j]) {\n                    matrix[i][0] = matrix[0][j] = 0;\n                }\n            }\n        }\n        for (int i = 1; i &lt; m; i++) {\n            for (int j = 1; j &lt; n; j++) {\n                if (!matrix[i][0] || !matrix[0][j]) {\n                    matrix[i][j] = 0;\n                }\n            }\n        }\n        if (flag_col0) {\n            for (int i = 0; i &lt; m; i++) {\n                matrix[i][0] = 0;\n            }\n        }\n        if (flag_row0) {\n            for (int j = 0; j &lt; n; j++) {\n                matrix[0][j] = 0;\n            }\n        }\n    }\n};\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/08\/17\/mat1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/08\/17\/mat1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1amatrix = [[1,1,1],[1,0,1],[1,1,1]]\n\u8f93\u51fa\uff1a[[1,0,1],[0,0,0],[1,0,1]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/08\/17\/mat2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/08\/17\/mat2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1amatrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]\n\u8f93\u51fa\uff1a[[0,0,0,0],[0,4,5,0],[0,3,1,0]]\n<\/code><\/pre>\n<h3 id=\"\u751f\u547d\u76f8\u5173\">\u751f\u547d\u76f8\u5173<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-85\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u6839\u636e <a href=\"https:\/\/baike.baidu.com\/item\/\u751f\u547d\u6e38\u620f\/2926434?fr=aladdin\">\u767e\u5ea6\u767e\u79d1<\/a> \uff0c <strong>\u751f\u547d\u6e38\u620f<\/strong> \uff0c\u7b80\u79f0\u4e3a <strong>\u751f\u547d<\/strong> \uff0c\u662f\u82f1\u56fd\u6570\u5b66\u5bb6\u7ea6\u7ff0\u00b7\u4f55\u987f\u00b7\u5eb7\u5a01\u5728 1970 \u5e74\u53d1\u660e\u7684\u7ec6\u80de\u81ea\u52a8\u673a\u3002<\/p>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u5305\u542b <code>m \u00d7 n<\/code> \u4e2a\u683c\u5b50\u7684\u9762\u677f\uff0c\u6bcf\u4e00\u4e2a\u683c\u5b50\u90fd\u53ef\u4ee5\u770b\u6210\u662f\u4e00\u4e2a\u7ec6\u80de\u3002\u6bcf\u4e2a\u7ec6\u80de\u90fd\u5177\u6709\u4e00\u4e2a\u521d\u59cb\u72b6\u6001\uff1a <code>1<\/code> \u5373\u4e3a <strong>\u6d3b\u7ec6\u80de<\/strong> \uff08live\uff09\uff0c\u6216 <code>0<\/code> \u5373\u4e3a <strong>\u6b7b\u7ec6\u80de<\/strong> \uff08dead\uff09\u3002\u6bcf\u4e2a\u7ec6\u80de\u4e0e\u5176\u516b\u4e2a\u76f8\u90bb\u4f4d\u7f6e\uff08\u6c34\u5e73\uff0c\u5782\u76f4\uff0c\u5bf9\u89d2\u7ebf\uff09\u7684\u7ec6\u80de\u90fd\u9075\u5faa\u4ee5\u4e0b\u56db\u6761\u751f\u5b58\u5b9a\u5f8b\uff1a<\/p>\n<ol start=\"\">\n<li>\u5982\u679c\u6d3b\u7ec6\u80de\u5468\u56f4\u516b\u4e2a\u4f4d\u7f6e\u7684\u6d3b\u7ec6\u80de\u6570\u5c11\u4e8e\u4e24\u4e2a\uff0c\u5219\u8be5\u4f4d\u7f6e\u6d3b\u7ec6\u80de\u6b7b\u4ea1\uff1b<\/li>\n<li>\u5982\u679c\u6d3b\u7ec6\u80de\u5468\u56f4\u516b\u4e2a\u4f4d\u7f6e\u6709\u4e24\u4e2a\u6216\u4e09\u4e2a\u6d3b\u7ec6\u80de\uff0c\u5219\u8be5\u4f4d\u7f6e\u6d3b\u7ec6\u80de\u4ecd\u7136\u5b58\u6d3b\uff1b<\/li>\n<li>\u5982\u679c\u6d3b\u7ec6\u80de\u5468\u56f4\u516b\u4e2a\u4f4d\u7f6e\u6709\u8d85\u8fc7\u4e09\u4e2a\u6d3b\u7ec6\u80de\uff0c\u5219\u8be5\u4f4d\u7f6e\u6d3b\u7ec6\u80de\u6b7b\u4ea1\uff1b<\/li>\n<li>\u5982\u679c\u6b7b\u7ec6\u80de\u5468\u56f4\u6b63\u597d\u6709\u4e09\u4e2a\u6d3b\u7ec6\u80de\uff0c\u5219\u8be5\u4f4d\u7f6e\u6b7b\u7ec6\u80de\u590d\u6d3b\uff1b<\/li>\n<\/ol>\n<p>\u4e0b\u4e00\u4e2a\u72b6\u6001\u662f\u901a\u8fc7\u5c06\u4e0a\u8ff0\u89c4\u5219\u540c\u65f6\u5e94\u7528\u4e8e\u5f53\u524d\u72b6\u6001\u4e0b\u7684\u6bcf\u4e2a\u7ec6\u80de\u6240\u5f62\u6210\u7684\uff0c\u5176\u4e2d\u7ec6\u80de\u7684\u51fa\u751f\u548c\u6b7b\u4ea1\u662f\u540c\u65f6\u53d1\u751f\u7684\u3002\u7ed9\u4f60 <code>m x n<\/code> \u7f51\u683c\u9762\u677f <code>board<\/code> \u7684\u5f53\u524d\u72b6\u6001\uff0c\u8fd4\u56de\u4e0b\u4e00\u4e2a\u72b6\u6001\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-64\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u7b2c\u4e00\u79cd\u89e3\u6cd5 \u9700\u8981\u5b66\u4e60\u7684\u662f <code>int neighbor[3] = {0,1,-1};<\/code><\/p>\n<p>\u901a\u8fc7\u8fd9\u4e2a\u6570\u7ec4\u7684\u8bbe\u7f6e\u53ef\u4ee5\u5b9e\u73b0 \u7b80\u6613\u7684\u8fb9\u754c\u5224\u65ad<\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">int r = (i + neighbor[a]);\nint c = (j + neighbor[b]);\n\n\nif ((r &lt; row &amp;&amp; r &gt;= 0) &amp;&amp; (c &lt; column &amp;&amp; c &gt;= 0) &amp;&amp; (copyBoard[r][c] == 1))\n{\n  live++;\n}\n\n<\/code><\/pre>\n<p>\u89e3\u6cd5\u4e8c<\/p>\n<p>\u5982\u679c\u7ec6\u80de\u4e4b\u524d\u662f\u6d3b\u7684 \u7136\u540e\u6b7b\u4e86,\u5219\u6807\u8bb0\u4e3a -1<\/p>\n<p>\u5982\u679c\u7ec6\u80de\u4e4b\u524d\u662f\u6b7b\u7684 \u7136\u540e\u6d3b\u4e86,\u5219\u6807\u8bb0\u4e3a 2<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-85\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    void gameOfLife(vector&lt;vector&lt;int&gt;&gt;&amp; board) {\n        int row = board.size();\n        int column = board[0].size();\n\n        int neighbor[3] = {0,1,-1};\n\n\n        vector&lt;vector&lt;int&gt;&gt; copyBoard(row, vector&lt;int&gt;(column, 0));\n\n\n\n        for (int i = 0; i &lt; row; i++)\n        {\n            for (int j = 0; j &lt; column; j++)\n            {\n                copyBoard[i][j] = board[i][j];\n            }\n        }\n\n        for (int i = 0; i &lt; row; i++)\n        {\n            for (int j = 0; j &lt; column; j++)\n            {\n                int live = 0;\n\n                for (int a = 0; a &lt; 3; a++)\n                {\n                    for (int b = 0; b &lt; 3; b++)\n                    {\n                        if (!(neighbor[a] == 0 &amp;&amp; neighbor[b] == 0))\n                        {\n                            int r = (i + neighbor[a]);\n                            int c = (j + neighbor[b]);\n\n\n                            if ((r &lt; row &amp;&amp; r &gt;= 0) &amp;&amp; (c &lt; column &amp;&amp; c &gt;= 0) &amp;&amp; (copyBoard[r][c] == 1))\n                            {\n                                live++;\n                            }\n\n\n                        }\n                    }\n                }\n\n\n                if ((copyBoard[i][j] == 1) &amp;&amp; (live &lt; 2 || live &gt; 3))\n                {\n                    board[i][j] = 0;\n                }\n\n                if ((copyBoard[i][j] == 0) &amp;&amp; (live == 3))\n                {\n                    board[i][j] = 1;\n                }\n            }\n        }\n\n       \n    }\n};\n<\/code><\/pre>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    void gameOfLife(vector&lt;vector&lt;int&gt;&gt;&amp; board) {\n        int neighbors[3] = {0, 1, -1};\n\n        int rows = board.size();\n        int cols = board[0].size();\n\n        \/\/ \u904d\u5386\u9762\u677f\u6bcf\u4e00\u4e2a\u683c\u5b50\u91cc\u7684\u7ec6\u80de\n        for (int row = 0; row &lt; rows; row++) {\n            for (int col = 0; col &lt; cols; col++) {\n\n                \/\/ \u5bf9\u4e8e\u6bcf\u4e00\u4e2a\u7ec6\u80de\u7edf\u8ba1\u5176\u516b\u4e2a\u76f8\u90bb\u4f4d\u7f6e\u91cc\u7684\u6d3b\u7ec6\u80de\u6570\u91cf\n                int liveNeighbors = 0;\n\n                for (int i = 0; i &lt; 3; i++) {\n                    for (int j = 0; j &lt; 3; j++) {\n\n                        if (!(neighbors[i] == 0 &amp;&amp; neighbors[j] == 0)) {\n                            \/\/ \u76f8\u90bb\u4f4d\u7f6e\u7684\u5750\u6807\n                            int r = (row + neighbors[i]);\n                            int c = (col + neighbors[j]);\n\n                            \/\/ \u67e5\u770b\u76f8\u90bb\u7684\u7ec6\u80de\u662f\u5426\u662f\u6d3b\u7ec6\u80de\n                            if ((r &lt; rows &amp;&amp; r &gt;= 0) &amp;&amp; (c &lt; cols &amp;&amp; c &gt;= 0) &amp;&amp; (abs(board[r][c]) == 1)) {\n                                liveNeighbors += 1;\n                            }\n                        }\n                    }\n                }\n\n                \/\/ \u89c4\u5219 1 \u6216\u89c4\u5219 3 \n                if ((board[row][col] == 1) &amp;&amp; (liveNeighbors &lt; 2 || liveNeighbors &gt; 3)) {\n                    \/\/ -1 \u4ee3\u8868\u8fd9\u4e2a\u7ec6\u80de\u8fc7\u53bb\u662f\u6d3b\u7684\u73b0\u5728\u6b7b\u4e86\n                    board[row][col] = -1;\n                }\n                \/\/ \u89c4\u5219 4\n                if (board[row][col] == 0 &amp;&amp; liveNeighbors == 3) {\n                    \/\/ 2 \u4ee3\u8868\u8fd9\u4e2a\u7ec6\u80de\u8fc7\u53bb\u662f\u6b7b\u7684\u73b0\u5728\u6d3b\u4e86\n                    board[row][col] = 2;\n                }\n            }\n        }\n\n        \/\/ \u904d\u5386 board \u5f97\u5230\u4e00\u6b21\u66f4\u65b0\u540e\u7684\u72b6\u6001\n        for (int row = 0; row &lt; rows; row++) {\n            for (int col = 0; col &lt; cols; col++) {\n                if (board[row][col] &gt; 0) {\n                    board[row][col] = 1;\n                } else {\n                    board[row][col] = 0;\n                }\n            }\n        }\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/12\/26\/grid1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/12\/26\/grid1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aboard = [[0,1,0],[0,0,1],[1,1,1],[0,0,0]]\n\u8f93\u51fa\uff1a[[0,0,0],[1,0,1],[0,1,1],[0,1,0]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/12\/26\/grid2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/12\/26\/grid2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aboard = [[1,1],[1,0]]\n\u8f93\u51fa\uff1a[[1,1],[1,1]]\n<\/code><\/pre>\n<h3 id=\"\u641c\u7d22\u4e8c\u7ef4\u77e9\u9635\u2171\">\u641c\u7d22\u4e8c\u7ef4\u77e9\u9635\u2161<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-86\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7f16\u5199\u4e00\u4e2a\u9ad8\u6548\u7684\u7b97\u6cd5\u6765\u641c\u7d22 <code>*m* x *n*<\/code> \u77e9\u9635 <code>matrix<\/code> \u4e2d\u7684\u4e00\u4e2a\u76ee\u6807\u503c <code>target<\/code> \u3002\u8be5\u77e9\u9635\u5177\u6709\u4ee5\u4e0b\u7279\u6027\uff1a<\/p>\n<ul>\n<li>\u6bcf\u884c\u7684\u5143\u7d20\u4ece\u5de6\u5230\u53f3\u5347\u5e8f\u6392\u5217\u3002<\/li>\n<li>\u6bcf\u5217\u7684\u5143\u7d20\u4ece\u4e0a\u5230\u4e0b\u5347\u5e8f\u6392\u5217\u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-65\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-86\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\/\/\u7075\u795e\u7684\nclass Solution {\npublic:\n    bool searchMatrix(vector&lt;vector&lt;int&gt;&gt;&amp; matrix, int target) {\n        int m = matrix.size(), n = matrix[0].size();\n        int i = 0, j = n - 1; \/\/ \u4ece\u53f3\u4e0a\u89d2\u5f00\u59cb\n        while (i &lt; m &amp;&amp; j &gt;= 0) { \/\/ \u8fd8\u6709\u5269\u4f59\u5143\u7d20\n            if (matrix[i][j] == target) {\n                return true; \/\/ \u627e\u5230 target\n            }\n            if (matrix[i][j] &lt; target) {\n                i++; \/\/ \u8fd9\u4e00\u884c\u5269\u4f59\u5143\u7d20\u5168\u90e8\u5c0f\u4e8e target\uff0c\u6392\u9664\n            } else {\n                j--; \/\/ \u8fd9\u4e00\u5217\u5269\u4f59\u5143\u7d20\u5168\u90e8\u5927\u4e8e target\uff0c\u6392\u9664\n            }\n        }\n        return false;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/11\/25\/searchgrid2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/11\/25\/searchgrid2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1amatrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/11\/25\/searchgrid.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/11\/25\/searchgrid.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1amatrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<h2 id=\"\u533a\u95f4\">\u533a\u95f4<\/h2>\n<h3 id=\"\u6c47\u603b\u533a\u95f4\">\u6c47\u603b\u533a\u95f4<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-87\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a <strong>\u65e0\u91cd\u590d\u5143\u7d20<\/strong> \u7684 <strong>\u6709\u5e8f<\/strong> \u6574\u6570\u6570\u7ec4 <code>nums<\/code> \u3002<\/p>\n<p>\u8fd4\u56de <em><strong>\u6070\u597d\u8986\u76d6\u6570\u7ec4\u4e2d\u6240\u6709\u6570\u5b57<\/strong> \u7684 <strong>\u6700\u5c0f\u6709\u5e8f<\/strong> \u533a\u95f4\u8303\u56f4\u5217\u8868<\/em> \u3002\u4e5f\u5c31\u662f\u8bf4\uff0c<code>nums<\/code> \u7684\u6bcf\u4e2a\u5143\u7d20\u90fd\u6070\u597d\u88ab\u67d0\u4e2a\u533a\u95f4\u8303\u56f4\u6240\u8986\u76d6\uff0c\u5e76\u4e14\u4e0d\u5b58\u5728\u5c5e\u4e8e\u67d0\u4e2a\u8303\u56f4\u4f46\u4e0d\u5c5e\u4e8e <code>nums<\/code> \u7684\u6570\u5b57 <code>x<\/code> \u3002<\/p>\n<p>\u5217\u8868\u4e2d\u7684\u6bcf\u4e2a\u533a\u95f4\u8303\u56f4 <code>[a,b]<\/code> \u5e94\u8be5\u6309\u5982\u4e0b\u683c\u5f0f\u8f93\u51fa\uff1a<\/p>\n<ul>\n<li><code>\"a-&gt;b\"<\/code> \uff0c\u5982\u679c <code>a != b<\/code><\/li>\n<li><code>\"a\"<\/code> \uff0c\u5982\u679c <code>a == b<\/code><\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-66\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8fd9\u4e2a\u5199\u6cd5\u7684\u597d\u5904\u662f\uff0c\u65e0\u9700\u7279\u5224 nums \u662f\u5426\u4e3a\u7a7a\uff0c\u4e5f\u65e0\u9700\u5728\u5faa\u73af\u7ed3\u675f\u540e\uff0c\u518d\u8865\u4e0a\u5904\u7406\u6700\u540e\u4e00\u6bb5\u533a\u95f4\u7684\u903b\u8f91\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-87\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;string&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;string&gt; summaryRanges(vector&lt;int&gt;&amp; nums) {\n        vector&lt;string&gt; ans;\n        int i = 0;\n        int n = nums.size();\n\n        while (i &lt; n) {\n            int low = i;\n            i++;\n\n            while (i &lt; n &amp;&amp; nums[i] == nums[i - 1] + 1) {\n                i++;\n            }\n\n            int high = i - 1;\n\n            if (low &lt; high) {\n                ans.push_back(to_string(nums[low]) + \"-&gt;\" + to_string(nums[high]));\n            }\n            else {\n                ans.push_back(to_string(nums[low]));\n            }\n        }\n\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [0,1,2,4,5,7]\n\u8f93\u51fa\uff1a[\"0-&gt;2\",\"4-&gt;5\",\"7\"]\n\u89e3\u91ca\uff1a\u533a\u95f4\u8303\u56f4\u662f\uff1a\n[0,2] --&gt; \"0-&gt;2\"\n[4,5] --&gt; \"4-&gt;5\"\n[7,7] --&gt; \"7\"\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [0,2,3,4,6,8,9]\n\u8f93\u51fa\uff1a[\"0\",\"2-&gt;4\",\"6\",\"8-&gt;9\"]\n\u89e3\u91ca\uff1a\u533a\u95f4\u8303\u56f4\u662f\uff1a\n[0,0] --&gt; \"0\"\n[2,4] --&gt; \"2-&gt;4\"\n[6,6] --&gt; \"6\"\n[8,9] --&gt; \"8-&gt;9\"\n<\/code><\/pre>\n<h3 id=\"\u63d2\u5165\u533a\u95f4\">\u63d2\u5165\u533a\u95f4<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-88\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a <strong>\u65e0\u91cd\u53e0\u7684<\/strong> <em>\uff0c<\/em>\u6309\u7167\u533a\u95f4\u8d77\u59cb\u7aef\u70b9\u6392\u5e8f\u7684\u533a\u95f4\u5217\u8868 <code>intervals<\/code>\uff0c\u5176\u4e2d <code>intervals[i] = [starti, endi]<\/code> \u8868\u793a\u7b2c <code>i<\/code> \u4e2a\u533a\u95f4\u7684\u5f00\u59cb\u548c\u7ed3\u675f\uff0c\u5e76\u4e14 <code>intervals<\/code> \u6309\u7167 <code>starti<\/code> \u5347\u5e8f\u6392\u5217\u3002\u540c\u6837\u7ed9\u5b9a\u4e00\u4e2a\u533a\u95f4 <code>newInterval = [start, end]<\/code> \u8868\u793a\u53e6\u4e00\u4e2a\u533a\u95f4\u7684\u5f00\u59cb\u548c\u7ed3\u675f\u3002<\/p>\n<p>\u5728 <code>intervals<\/code> \u4e2d\u63d2\u5165\u533a\u95f4 <code>newInterval<\/code>\uff0c\u4f7f\u5f97 <code>intervals<\/code> \u4f9d\u7136\u6309\u7167 <code>starti<\/code> \u5347\u5e8f\u6392\u5217\uff0c\u4e14\u533a\u95f4\u4e4b\u95f4\u4e0d\u91cd\u53e0\uff08\u5982\u679c\u6709\u5fc5\u8981\u7684\u8bdd\uff0c\u53ef\u4ee5\u5408\u5e76\u533a\u95f4\uff09\u3002<\/p>\n<p>\u8fd4\u56de\u63d2\u5165\u4e4b\u540e\u7684 <code>intervals<\/code>\u3002<\/p>\n<p><strong>\u6ce8\u610f<\/strong> \u4f60\u4e0d\u9700\u8981\u539f\u5730\u4fee\u6539 <code>intervals<\/code>\u3002\u4f60\u53ef\u4ee5\u521b\u5efa\u4e00\u4e2a\u65b0\u6570\u7ec4\u7136\u540e\u8fd4\u56de\u5b83\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-67\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5982\u679c l&gt; right\uff0c\u8bf4\u660e[l,r]\u4e0e S \u4e0d\u91cd\u53e0\u5e76\u4e14\u5728\u5176\u53f3\u4fa7\uff0c\u6211\u4eec\u53ef\u4ee5\u76f4\u63a5\u5c06[l,r]\u52a0\u5165\u7b54\u6848;<\/p>\n<p>\u5982\u679c r&lt; left\uff0c\u8bf4\u660e[l,r]\u4e0e S \u4e0d\u91cd\u53e0\u5e76\u4e14\u5728\u5176\u5de6\u4fa7\uff0c\u6211\u4eec\u53ef\u4ee5\u76f4\u63a5\u5c06[l,r]\u52a0\u5165\u7b54\u6848;<\/p>\n<p>\u5982\u679c\u4e0a\u9762\u60c5\u51b5\u90fd\u4e0d\u6ee1\u8db3,\u8bf4\u660e[l,r]\u91cd\u53e0,\u6211\u4eec\u65e0\u9700\u5c06[l,r]\u52a0\u5165\u7b54\u6848,\u6211\u4eec\u9700\u8981\u5408\u5e76\u4e8c\u8005<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-88\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; insert(vector&lt;vector&lt;int&gt;&gt;&amp; intervals, vector&lt;int&gt;&amp; newInterval) {\n        int left = newInterval[0];\n        int right = newInterval[1];\n        bool placed = false;\n        vector&lt;vector&lt;int&gt;&gt; ans;\n        for (const auto&amp; interval : intervals) {\n            if (interval[0] &gt; right) {\n                \/\/ \u5728\u63d2\u5165\u533a\u95f4\u7684\u53f3\u4fa7\u4e14\u65e0\u4ea4\u96c6\n                if (!placed) {\n                    ans.push_back({ left, right });\n                    placed = true;\n                }\n                ans.push_back(interval);\n            }\n            else if (interval[1] &lt; left) {\n                \/\/ \u5728\u63d2\u5165\u533a\u95f4\u7684\u5de6\u4fa7\u4e14\u65e0\u4ea4\u96c6\n                ans.push_back(interval);\n            }\n            else {\n                \/\/ \u4e0e\u63d2\u5165\u533a\u95f4\u6709\u4ea4\u96c6\uff0c\u8ba1\u7b97\u5b83\u4eec\u7684\u5e76\u96c6\n                left = min(left, interval[0]);\n                right = max(right, interval[1]);\n            }\n        }\n        if (!placed) {\n            ans.push_back({ left, right });\n        }\n        return ans;\n    }\n};\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aintervals = [[1,3],[6,9]], newInterval = [2,5]\n\u8f93\u51fa\uff1a[[1,5],[6,9]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aintervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]\n\u8f93\u51fa\uff1a[[1,2],[3,10],[12,16]]\n\u89e3\u91ca\uff1a\u8fd9\u662f\u56e0\u4e3a\u65b0\u7684\u533a\u95f4 [4,8] \u4e0e [3,5],[6,7],[8,10] \u91cd\u53e0\u3002\n<\/code><\/pre>\n<h3 id=\"\u7528\u6700\u5c11\u6570\u91cf\u7684\u7bad\u5f15\u7206\u6c14\u7403\">\u7528\u6700\u5c11\u6570\u91cf\u7684\u7bad\u5f15\u7206\u6c14\u7403<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-89\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u6709\u4e00\u4e9b\u7403\u5f62\u6c14\u7403\u8d34\u5728\u4e00\u5835\u7528 XY \u5e73\u9762\u8868\u793a\u7684\u5899\u9762\u4e0a\u3002\u5899\u9762\u4e0a\u7684\u6c14\u7403\u8bb0\u5f55\u5728\u6574\u6570\u6570\u7ec4 <code>points<\/code> \uff0c\u5176\u4e2d<code>points[i] = [xstart, xend]<\/code> \u8868\u793a\u6c34\u5e73\u76f4\u5f84\u5728 <code>xstart<\/code> \u548c <code>xend<\/code>\u4e4b\u95f4\u7684\u6c14\u7403\u3002\u4f60\u4e0d\u77e5\u9053\u6c14\u7403\u7684\u786e\u5207 y \u5750\u6807\u3002<\/p>\n<p>\u4e00\u652f\u5f13\u7bad\u53ef\u4ee5\u6cbf\u7740 x \u8f74\u4ece\u4e0d\u540c\u70b9 <strong>\u5b8c\u5168\u5782\u76f4<\/strong> \u5730\u5c04\u51fa\u3002\u5728\u5750\u6807 <code>x<\/code> \u5904\u5c04\u51fa\u4e00\u652f\u7bad\uff0c\u82e5\u6709\u4e00\u4e2a\u6c14\u7403\u7684\u76f4\u5f84\u7684\u5f00\u59cb\u548c\u7ed3\u675f\u5750\u6807\u4e3a <code>x``start<\/code>\uff0c<code>x``end<\/code>\uff0c \u4e14\u6ee1\u8db3 <code>xstart \u2264 x \u2264 x``end<\/code>\uff0c\u5219\u8be5\u6c14\u7403\u4f1a\u88ab <strong>\u5f15\u7206<\/strong> \u3002\u53ef\u4ee5\u5c04\u51fa\u7684\u5f13\u7bad\u7684\u6570\u91cf <strong>\u6ca1\u6709\u9650\u5236<\/strong> \u3002 \u5f13\u7bad\u4e00\u65e6\u88ab\u5c04\u51fa\u4e4b\u540e\uff0c\u53ef\u4ee5\u65e0\u9650\u5730\u524d\u8fdb\u3002<\/p>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6570\u7ec4 <code>points<\/code> \uff0c<em>\u8fd4\u56de\u5f15\u7206\u6240\u6709\u6c14\u7403\u6240\u5fc5\u987b\u5c04\u51fa\u7684 <strong>\u6700\u5c0f<\/strong> \u5f13\u7bad\u6570<\/em> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-68\">\u9898\u76ee\u5206\u6790<\/h4>\n<pre><code>        \u6807\u6746\n[1.......6] \n   [2..........8] \n            [7.........12] \n                   [10.........16]\n\n\n<\/code><\/pre>\n<ol start=\"\">\n<li>\u62ff\u5f53\u524d\u533a\u95f4\u7684\u53f3\u7aef\u4f5c\u4e3a\u6807\u6746\u3002<\/li>\n<li>\u53ea\u8981 \u4e0b\u4e00\u4e2a\u533a\u95f4\u7684\u5de6\u7aef&lt;=\u6807\u6746\uff0c\u5219\u91cd\u5408\uff0c\u7ee7\u7eed\u5bfb\u6c42\u4e0e\u4e0b\u4e00\u4e2a\u533a\u95f4\u91cd\u5408\u3002<\/li>\n<li>\u76f4\u5230\u9047\u5230\u4e0d\u91cd\u5408\u7684\u533a\u95f4\uff0c\u5f13\u7bad\u6570 +1\u3002<\/li>\n<li>\u62ff\u65b0\u533a\u95f4\u7684\u53f3\u7aef\u4f5c\u4e3a\u6807\u6746\uff0c\u91cd\u590d\u4ee5\u4e0a\u6b65\u9aa4\u3002<\/li>\n<\/ol>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-89\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    int findMinArrowShots(vector&lt;vector&lt;int&gt;&gt;&amp; points) {\n\n        if (points.size() == 0)\n        {\n            return 0;\n        }\n\n        sort(points.begin(), points.end(), [](const vector&lt;int&gt;&amp; u, const vector&lt;int&gt;&amp; v) {\n            return u[1] &lt; v[1];\n            });\n\n        int num = 1;\n        int pos = points[0][1];\n\n        for (auto&amp; point : points)\n        {\n            \n            if (point[0] &gt; pos)\n            {\n                num++;\n                pos = point[1];\n            }\n        }\n\n        return num;\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1apoints = [[10,16],[2,8],[1,6],[7,12]]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1a\u6c14\u7403\u53ef\u4ee5\u75282\u652f\u7bad\u6765\u7206\u7834:\n-\u5728x = 6\u5904\u5c04\u51fa\u7bad\uff0c\u51fb\u7834\u6c14\u7403[2,8]\u548c[1,6]\u3002\n-\u5728x = 11\u5904\u53d1\u5c04\u7bad\uff0c\u51fb\u7834\u6c14\u7403[10,16]\u548c[7,12]\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1apoints = [[1,2],[3,4],[5,6],[7,8]]\n\u8f93\u51fa\uff1a4\n\u89e3\u91ca\uff1a\u6bcf\u4e2a\u6c14\u7403\u9700\u8981\u5c04\u51fa\u4e00\u652f\u7bad\uff0c\u603b\u5171\u9700\u89814\u652f\u7bad\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1apoints = [[1,2],[2,3],[3,4],[4,5]]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1a\u6c14\u7403\u53ef\u4ee5\u75282\u652f\u7bad\u6765\u7206\u7834:\n- \u5728x = 2\u5904\u53d1\u5c04\u7bad\uff0c\u51fb\u7834\u6c14\u7403[1,2]\u548c[2,3]\u3002\n- \u5728x = 4\u5904\u5c04\u51fa\u7bad\uff0c\u51fb\u7834\u6c14\u7403[3,4]\u548c[4,5]\u3002\n<\/code><\/pre>\n<h2 id=\"\u6808\">\u6808<\/h2>\n<h3 id=\"\u6709\u6548\u7684\u62ec\u53f7\">\u6709\u6548\u7684\u62ec\u53f7<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-90\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u53ea\u5305\u62ec <code>'('<\/code>\uff0c<code>')'<\/code>\uff0c<code>'{'<\/code>\uff0c<code>'}'<\/code>\uff0c<code>'['<\/code>\uff0c<code>']'<\/code> \u7684\u5b57\u7b26\u4e32 <code>s<\/code> \uff0c\u5224\u65ad\u5b57\u7b26\u4e32\u662f\u5426\u6709\u6548\u3002<\/p>\n<p>\u6709\u6548\u5b57\u7b26\u4e32\u9700\u6ee1\u8db3\uff1a<\/p>\n<ol start=\"\">\n<li>\u5de6\u62ec\u53f7\u5fc5\u987b\u7528\u76f8\u540c\u7c7b\u578b\u7684\u53f3\u62ec\u53f7\u95ed\u5408\u3002<\/li>\n<li>\u5de6\u62ec\u53f7\u5fc5\u987b\u4ee5\u6b63\u786e\u7684\u987a\u5e8f\u95ed\u5408\u3002<\/li>\n<li>\u6bcf\u4e2a\u53f3\u62ec\u53f7\u90fd\u6709\u4e00\u4e2a\u5bf9\u5e94\u7684\u76f8\u540c\u7c7b\u578b\u7684\u5de6\u62ec\u53f7\u3002<\/li>\n<\/ol>\n<h4 id=\"\u9898\u76ee\u5206\u6790-69\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5728\u8fd9\u91cc\u6211\u4eec\u4e0d\u80fd\u4f7f\u7528<\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">unordered_map&lt;char, char&gt; pair = {\n    {'{','}'},\n    {'[',']'},\n    {'(',')'}\n};\n<\/code><\/pre>\n<p>\u56e0\u4e3a\u6211\u9700\u8981\u5224\u65ad\u95ed\u62ec\u53f7\u6240\u5bf9\u5e94\u7684\u952e\u503c\u662f\u5426\u548c\u6808\u9876\u7684\u5f00\u62ec\u53f7\u76f8\u540c<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-90\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;string&gt;\n#include &lt;unordered_map&gt;\n#include &lt;stack&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    bool isValid(string s) {\n        if (s.size() % 2 == 1)\n        {\n            return false;\n        }\n\n        unordered_map&lt;char, char&gt; pair = {\n            {'}', '{'},\n            {']', '['},\n            {')', '('}\n        };\n\n        stack&lt;char&gt; stk;\n\n        for (auto&amp; S : s)\n        {\n            if (pair.count(S))\n            {\n                if (stk.empty() || pair[S] != stk.top())\n                    return false;\n\n                stk.pop();\n            }\n            else\n            {\n                stk.push(S);\n            }\n        }\n\n        return stk.empty();\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"()\"\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"()[]{}\"\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"(]\"\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<p><strong>\u63d0\u793a\uff1a<\/strong><\/p>\n<ul>\n<li><code>1 &lt;= s.length &lt;= 104<\/code><\/li>\n<li><code>s<\/code> \u4ec5\u7531\u62ec\u53f7 <code>'()[]{}'<\/code> \u7ec4\u6210<\/li>\n<\/ul>\n<h3 id=\"\u7b80\u5316\u8def\u5f84\">\u7b80\u5316\u8def\u5f84<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-91\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32 <code>path<\/code> \uff0c\u8868\u793a\u6307\u5411\u67d0\u4e00\u6587\u4ef6\u6216\u76ee\u5f55\u7684 Unix \u98ce\u683c <strong>\u7edd\u5bf9\u8def\u5f84<\/strong> \uff08\u4ee5 <code>'\/'<\/code> \u5f00\u5934\uff09\uff0c\u8bf7\u4f60\u5c06\u5176\u8f6c\u5316\u4e3a\u66f4\u52a0\u7b80\u6d01\u7684\u89c4\u8303\u8def\u5f84\u3002<\/p>\n<p>\u5728 Unix \u98ce\u683c\u7684\u6587\u4ef6\u7cfb\u7edf\u4e2d\uff0c\u4e00\u4e2a\u70b9\uff08<code>.<\/code>\uff09\u8868\u793a\u5f53\u524d\u76ee\u5f55\u672c\u8eab\uff1b\u6b64\u5916\uff0c\u4e24\u4e2a\u70b9 \uff08<code>..<\/code>\uff09 \u8868\u793a\u5c06\u76ee\u5f55\u5207\u6362\u5230\u4e0a\u4e00\u7ea7\uff08\u6307\u5411\u7236\u76ee\u5f55\uff09\uff1b\u4e24\u8005\u90fd\u53ef\u4ee5\u662f\u590d\u6742\u76f8\u5bf9\u8def\u5f84\u7684\u7ec4\u6210\u90e8\u5206\u3002\u4efb\u610f\u591a\u4e2a\u8fde\u7eed\u7684\u659c\u6760\uff08\u5373\uff0c<code>'\/\/'<\/code>\uff09\u90fd\u88ab\u89c6\u4e3a\u5355\u4e2a\u659c\u6760 <code>'\/'<\/code> \u3002 \u5bf9\u4e8e\u6b64\u95ee\u9898\uff0c\u4efb\u4f55\u5176\u4ed6\u683c\u5f0f\u7684\u70b9\uff08\u4f8b\u5982\uff0c<code>'...'<\/code>\uff09\u5747\u88ab\u89c6\u4e3a\u6587\u4ef6\/\u76ee\u5f55\u540d\u79f0\u3002<\/p>\n<p>\u8bf7\u6ce8\u610f\uff0c\u8fd4\u56de\u7684 <strong>\u89c4\u8303\u8def\u5f84<\/strong> \u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a<\/p>\n<ul>\n<li>\u59cb\u7ec8\u4ee5\u659c\u6760 <code>'\/'<\/code> \u5f00\u5934\u3002<\/li>\n<li>\u4e24\u4e2a\u76ee\u5f55\u540d\u4e4b\u95f4\u5fc5\u987b\u53ea\u6709\u4e00\u4e2a\u659c\u6760 <code>'\/'<\/code> \u3002<\/li>\n<li>\u6700\u540e\u4e00\u4e2a\u76ee\u5f55\u540d\uff08\u5982\u679c\u5b58\u5728\uff09<strong>\u4e0d\u80fd<\/strong> \u4ee5 <code>'\/'<\/code> \u7ed3\u5c3e\u3002<\/li>\n<li>\u6b64\u5916\uff0c\u8def\u5f84\u4ec5\u5305\u542b\u4ece\u6839\u76ee\u5f55\u5230\u76ee\u6807\u6587\u4ef6\u6216\u76ee\u5f55\u7684\u8def\u5f84\u4e0a\u7684\u76ee\u5f55\uff08\u5373\uff0c\u4e0d\u542b <code>'.'<\/code> \u6216 <code>'..'<\/code>\uff09\u3002<\/li>\n<\/ul>\n<p>\u8fd4\u56de\u7b80\u5316\u540e\u5f97\u5230\u7684 <strong>\u89c4\u8303\u8def\u5f84<\/strong> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-70\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5bf9\u4e8e\u300c\u7a7a\u5b57\u7b26\u4e32\u300d\u4ee5\u53ca\u300c\u4e00\u4e2a\u70b9\u300d\uff0c\u6211\u4eec\u5b9e\u9645\u4e0a\u65e0\u9700\u5bf9\u5b83\u4eec\u8fdb\u884c\u5904\u7406\uff0c\u56e0\u4e3a\u300c\u7a7a\u5b57\u7b26\u4e32\u300d\u6ca1\u6709\u4efb\u4f55\u542b\u4e49\uff0c\u800c\u300c\u4e00\u4e2a\u70b9\u300d\u8868\u793a\u5f53\u524d\u76ee\u5f55\u672c\u8eab\uff0c\u6211\u4eec\u65e0\u9700\u5207\u6362\u76ee\u5f55\u3002<\/p>\n<p>\u5bf9\u4e8e\u300c\u4e24\u4e2a\u70b9\u300d\u6216\u8005\u300c\u76ee\u5f55\u540d\u300d\uff0c\u6211\u4eec\u5219\u53ef\u4ee5\u7528\u4e00\u4e2a\u6808\u6765\u7ef4\u62a4\u8def\u5f84\u4e2d\u7684\u6bcf\u4e00\u4e2a\u76ee\u5f55\u540d\u3002\u5f53\u6211\u4eec\u9047\u5230\u300c\u4e24\u4e2a\u70b9\u300d\u65f6\uff0c\u9700\u8981\u5c06\u76ee\u5f55\u5207\u6362\u5230\u4e0a\u4e00\u7ea7\uff0c\u56e0\u6b64\u53ea\u8981\u6808\u4e0d\u4e3a\u7a7a\uff0c\u6211\u4eec\u5c31\u5f39\u51fa\u6808\u9876\u7684\u76ee\u5f55\u3002\u5f53\u6211\u4eec\u9047\u5230\u300c\u76ee\u5f55\u540d\u300d\u65f6\uff0c\u5c31\u628a\u5b83\u653e\u5165\u6808\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-91\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;string&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    string simplifyPath(string path) {\n        auto splite = [](const string&amp; s, const char delim) -&gt; vector&lt;string&gt; {\n            vector&lt;string&gt; ans;\n            string cur;\n\n            for (auto&amp; ch : s)\n            {\n                if (ch == '\/')\n                {\n                    ans.push_back(move(cur));\n                    cur.clear();\n                }\n                else\n                {\n                    cur += ch;\n                }\n            }\n\n            ans.push_back(move(cur));\n            return ans;\n            };\n\n\n        vector&lt;string&gt; names = splite(path, '\/');\n        vector&lt;string&gt; stack;\n\n        for (string&amp; name : names)\n        {\n            if (name == \"..\")\n            {\n                if (!stack.empty())\n                {\n                    stack.pop_back();\n                }\n            }\n            else\n            {\n                if (!name.empty() &amp;&amp; name != \".\")\n                {\n                    stack.push_back(move(name));\n                }\n            }\n        }\n        string ans;\n        if (stack.empty()) {\n            ans = \"\/\";\n        }\n        else {\n            for (string&amp; name : stack) {\n                ans += \"\/\" + move(name);\n            }\n        }\n        return ans;\n\n     \n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1apath = \"\/home\/\"\n\u8f93\u51fa\uff1a\"\/home\"\n\u89e3\u91ca\uff1a\u6ce8\u610f\uff0c\u6700\u540e\u4e00\u4e2a\u76ee\u5f55\u540d\u540e\u9762\u6ca1\u6709\u659c\u6760\u3002 \n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1apath = \"\/..\/\"\n\u8f93\u51fa\uff1a\"\/\"\n\u89e3\u91ca\uff1a\u4ece\u6839\u76ee\u5f55\u5411\u4e0a\u4e00\u7ea7\u662f\u4e0d\u53ef\u884c\u7684\uff0c\u56e0\u4e3a\u6839\u76ee\u5f55\u662f\u4f60\u53ef\u4ee5\u5230\u8fbe\u7684\u6700\u9ad8\u7ea7\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1apath = \"\/home\/\/foo\/\"\n\u8f93\u51fa\uff1a\"\/home\/foo\"\n\u89e3\u91ca\uff1a\u5728\u89c4\u8303\u8def\u5f84\u4e2d\uff0c\u591a\u4e2a\u8fde\u7eed\u659c\u6760\u9700\u8981\u7528\u4e00\u4e2a\u659c\u6760\u66ff\u6362\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 4\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1apath = \"\/a\/.\/b\/..\/..\/c\/\"\n\u8f93\u51fa\uff1a\"\/c\"\n<\/code><\/pre>\n<h3 id=\"\u6700\u5c0f\u6808\">\u6700\u5c0f\u6808<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-92\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u8bbe\u8ba1\u4e00\u4e2a\u652f\u6301 <code>push<\/code> \uff0c<code>pop<\/code> \uff0c<code>top<\/code> \u64cd\u4f5c\uff0c\u5e76\u80fd\u5728\u5e38\u6570\u65f6\u95f4\u5185\u68c0\u7d22\u5230\u6700\u5c0f\u5143\u7d20\u7684\u6808\u3002<\/p>\n<p>\u5b9e\u73b0 <code>MinStack<\/code> \u7c7b:<\/p>\n<ul>\n<li><code>MinStack()<\/code> \u521d\u59cb\u5316\u5806\u6808\u5bf9\u8c61\u3002<\/li>\n<li><code>void push(int val)<\/code> \u5c06\u5143\u7d20val\u63a8\u5165\u5806\u6808\u3002<\/li>\n<li><code>void pop()<\/code> \u5220\u9664\u5806\u6808\u9876\u90e8\u7684\u5143\u7d20\u3002<\/li>\n<li><code>int top()<\/code> \u83b7\u53d6\u5806\u6808\u9876\u90e8\u7684\u5143\u7d20\u3002<\/li>\n<li><code>int getMin()<\/code> \u83b7\u53d6\u5806\u6808\u4e2d\u7684\u6700\u5c0f\u5143\u7d20\u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-71\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u4f7f\u7528\u989d\u5916\u7684\u7a7a\u95f4\u53bb\u5b9e\u73b0\u6700\u5c0f\u6808<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-92\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;stack&gt;\n\nusing namespace std;\n\n\nclass MinStack {\n    stack&lt;int&gt; stk;\n    stack&lt;int&gt; min_stack;\n\n\npublic:\n    MinStack() {\n        min_stack.push(INT_MAX);\n    }\n\n    void push(int val) {\n        stk.push(val);\n        min_stack.push(min(min_stack.top(), val));\n    }\n\n    void pop() {\n        stk.pop();\n        min_stack.pop();\n    }\n\n    int top() {\n        return stk.top();\n    }\n\n    int getMin() {\n        return min_stack.top();\n    }\n};\n\n\/**\n * Your MinStack object will be instantiated and called as such:\n * MinStack* obj = new MinStack();\n * obj-&gt;push(val);\n * obj-&gt;pop();\n * int param_3 = obj-&gt;top();\n * int param_4 = obj-&gt;getMin();\n *\/\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1a\n[\"MinStack\",\"push\",\"push\",\"push\",\"getMin\",\"pop\",\"top\",\"getMin\"]\n[[],[-2],[0],[-3],[],[],[],[]]\n\n\u8f93\u51fa\uff1a\n[null,null,null,null,-3,null,0,-2]\n\n\u89e3\u91ca\uff1a\nMinStack minStack = new MinStack();\nminStack.push(-2);\nminStack.push(0);\nminStack.push(-3);\nminStack.getMin();   --&gt; \u8fd4\u56de -3.\nminStack.pop();\nminStack.top();      --&gt; \u8fd4\u56de 0.\nminStack.getMin();   --&gt; \u8fd4\u56de -2.\n<\/code><\/pre>\n<h3 id=\"\u9006\u6ce2\u5170\u8868\u8fbe\u5f0f\u6c42\u503c\">\u9006\u6ce2\u5170\u8868\u8fbe\u5f0f\u6c42\u503c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-93\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32\u6570\u7ec4 <code>tokens<\/code> \uff0c\u8868\u793a\u4e00\u4e2a\u6839\u636e <a href=\"https:\/\/baike.baidu.com\/item\/\u9006\u6ce2\u5170\u5f0f\/128437\">\u9006\u6ce2\u5170\u8868\u793a\u6cd5<\/a> \u8868\u793a\u7684\u7b97\u672f\u8868\u8fbe\u5f0f\u3002<\/p>\n<p>\u8bf7\u4f60\u8ba1\u7b97\u8be5\u8868\u8fbe\u5f0f\u3002\u8fd4\u56de\u4e00\u4e2a\u8868\u793a\u8868\u8fbe\u5f0f\u503c\u7684\u6574\u6570\u3002<\/p>\n<p><strong>\u6ce8\u610f\uff1a<\/strong><\/p>\n<ul>\n<li>\u6709\u6548\u7684\u7b97\u7b26\u4e3a <code>'+'<\/code>\u3001<code>'-'<\/code>\u3001<code>'*'<\/code> \u548c <code>'\/'<\/code> \u3002<\/li>\n<li>\u6bcf\u4e2a\u64cd\u4f5c\u6570\uff08\u8fd0\u7b97\u5bf9\u8c61\uff09\u90fd\u53ef\u4ee5\u662f\u4e00\u4e2a\u6574\u6570\u6216\u8005\u53e6\u4e00\u4e2a\u8868\u8fbe\u5f0f\u3002<\/li>\n<li>\u4e24\u4e2a\u6574\u6570\u4e4b\u95f4\u7684\u9664\u6cd5\u603b\u662f <strong>\u5411\u96f6\u622a\u65ad<\/strong> \u3002<\/li>\n<li>\u8868\u8fbe\u5f0f\u4e2d\u4e0d\u542b\u9664\u96f6\u8fd0\u7b97\u3002<\/li>\n<li>\u8f93\u5165\u662f\u4e00\u4e2a\u6839\u636e\u9006\u6ce2\u5170\u8868\u793a\u6cd5\u8868\u793a\u7684\u7b97\u672f\u8868\u8fbe\u5f0f\u3002<\/li>\n<li>\u7b54\u6848\u53ca\u6240\u6709\u4e2d\u95f4\u8ba1\u7b97\u7ed3\u679c\u53ef\u4ee5\u7528 <strong>32 \u4f4d<\/strong> \u6574\u6570\u8868\u793a\u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-72\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6700\u4e0d\u60f3\u4e2d\u7b49\u9898\u7684\u4e2d\u7b49\u9898<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-93\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;string&gt;\n#include &lt;stack&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    int evalRPN(vector&lt;string&gt;&amp; tokens) {\n\n        stack&lt;int&gt; num;\n\n        for (auto&amp; ch : tokens)\n        {\n            if (ch == \"+\" || ch == \"-\" || ch == \"*\" || ch == \"\/\")\n            {\n                int a = num.top(); num.pop();\n                int b = num.top(); num.pop();\n                if (ch == \"+\") num.push(b + a);\n                if (ch == \"-\")  num.push(b - a);\n                if (ch == \"*\") num.push(b * a);\n                if (ch == \"\/\") num.push(b \/ a);\n            }\n            else\n            {\n                num.push(stoi(ch));\n            }\n        }\n\n        return num.top();\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1atokens = [\"2\",\"1\",\"+\",\"3\",\"*\"]\n\u8f93\u51fa\uff1a9\n\u89e3\u91ca\uff1a\u8be5\u7b97\u5f0f\u8f6c\u5316\u4e3a\u5e38\u89c1\u7684\u4e2d\u7f00\u7b97\u672f\u8868\u8fbe\u5f0f\u4e3a\uff1a((2 + 1) * 3) = 9\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1atokens = [\"4\",\"13\",\"5\",\"\/\",\"+\"]\n\u8f93\u51fa\uff1a6\n\u89e3\u91ca\uff1a\u8be5\u7b97\u5f0f\u8f6c\u5316\u4e3a\u5e38\u89c1\u7684\u4e2d\u7f00\u7b97\u672f\u8868\u8fbe\u5f0f\u4e3a\uff1a(4 + (13 \/ 5)) = 6\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1atokens = [\"10\",\"6\",\"9\",\"3\",\"+\",\"-11\",\"*\",\"\/\",\"*\",\"17\",\"+\",\"5\",\"+\"]\n\u8f93\u51fa\uff1a22\n\u89e3\u91ca\uff1a\u8be5\u7b97\u5f0f\u8f6c\u5316\u4e3a\u5e38\u89c1\u7684\u4e2d\u7f00\u7b97\u672f\u8868\u8fbe\u5f0f\u4e3a\uff1a\n  ((10 * (6 \/ ((9 + 3) * -11))) + 17) + 5\n= ((10 * (6 \/ (12 * -11))) + 17) + 5\n= ((10 * (6 \/ -132)) + 17) + 5\n= ((10 * 0) + 17) + 5\n= (0 + 17) + 5\n= 17 + 5\n= 22\n<\/code><\/pre>\n<h3 id=\"\u57fa\u672c\u8ba1\u7b97\u5668\">\u57fa\u672c\u8ba1\u7b97\u5668<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-94\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32\u8868\u8fbe\u5f0f <code>s<\/code> \uff0c\u8bf7\u4f60\u5b9e\u73b0\u4e00\u4e2a\u57fa\u672c\u8ba1\u7b97\u5668\u6765\u8ba1\u7b97\u5e76\u8fd4\u56de\u5b83\u7684\u503c\u3002<\/p>\n<p>\u6ce8\u610f:\u4e0d\u5141\u8bb8\u4f7f\u7528\u4efb\u4f55\u5c06\u5b57\u7b26\u4e32\u4f5c\u4e3a\u6570\u5b66\u8868\u8fbe\u5f0f\u8ba1\u7b97\u7684\u5185\u7f6e\u51fd\u6570\uff0c\u6bd4\u5982 <code>eval()<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-73\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-94\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;string&gt;\n#include &lt;stack&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    int calculate(string s) {\n        stack&lt;int&gt; ops;\n        ops.push(1);\n        int sign = 1;\n\n        int ret = 0;\n        int n = s.length();\n        int i = 0;\n        while (i &lt; n) {\n            if (s[i] == ' ') {\n                i++;\n            }\n            else if (s[i] == '+') {\n                sign = ops.top();\n                i++;\n            }\n            else if (s[i] == '-') {\n                sign = -ops.top();\n                i++;\n            }\n            else if (s[i] == '(') {\n                ops.push(sign);\n                i++;\n            }\n            else if (s[i] == ')') {\n                ops.pop();\n                i++;\n            }\n            else {\n                long num = 0;\n                while (i &lt; n &amp;&amp; s[i] &gt;= '0' &amp;&amp; s[i] &lt;= '9') {\n                    num = num * 10 + s[i] - '0';\n                    i++;\n                }\n                ret += sign * num;\n            }\n        }\n        return ret;\n    }\n};\n\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"1 + 1\"\n\u8f93\u51fa\uff1a2\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \" 2-1 + 2 \"\n\u8f93\u51fa\uff1a3\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"(1+(4+5+2)-3)+(6+8)\"\n\u8f93\u51fa\uff1a23\n<\/code><\/pre>\n<h3 id=\"\u63a5\u96e8\u6c34-3\">\u63a5\u96e8\u6c34<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-95\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a <code>n<\/code> \u4e2a\u975e\u8d1f\u6574\u6570\u8868\u793a\u6bcf\u4e2a\u5bbd\u5ea6\u4e3a <code>1<\/code> \u7684\u67f1\u5b50\u7684\u9ad8\u5ea6\u56fe\uff0c\u8ba1\u7b97\u6309\u6b64\u6392\u5217\u7684\u67f1\u5b50\uff0c\u4e0b\u96e8\u4e4b\u540e\u80fd\u63a5\u591a\u5c11\u96e8\u6c34\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-74\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u9664\u4e86\u8ba1\u7b97\u5e76\u5b58\u50a8\u6bcf\u4e2a\u4f4d\u7f6e\u4e24\u8fb9\u7684\u6700\u5927\u9ad8\u5ea6\u4ee5\u5916\uff0c\u4e5f\u53ef\u4ee5\u7528\u5355\u8c03\u6808\u8ba1\u7b97\u80fd\u63a5\u7684\u96e8\u6c34\u603b\u91cf\u3002<\/p>\n<p>\u7ef4\u62a4\u4e00\u4e2a\u5355\u8c03\u6808\uff0c\u5355\u8c03\u6808\u5b58\u50a8\u7684\u662f\u4e0b\u6807\uff0c\u6ee1\u8db3\u4ece\u6808\u5e95\u5230\u6808\u9876\u7684\u4e0b\u6807\u5bf9\u5e94\u7684\u6570\u7ec4 <code>height<\/code> \u4e2d\u7684\u5143\u7d20\u9012\u51cf\u3002<\/p>\n<p>\u4ece\u5de6\u5230\u53f3\u904d\u5386\u6570\u7ec4\uff0c\u904d\u5386\u5230\u4e0b\u6807 i \u65f6\uff0c\u5982\u679c\u6808\u5185\u81f3\u5c11\u6709\u4e24\u4e2a\u5143\u7d20\uff0c\u8bb0\u6808\u9876\u5143\u7d20\u4e3a top \u7684\u4e0b\u9762\u4e00\u4e2a\u5143\u7d20\u662f left\uff0c\u5219\u4e00\u5b9a\u6709 <code>height[left]\u2265height[top]<\/code>\u3002\u5982\u679c <code>height[i]&gt;height[top]<\/code>\uff0c\u5219\u5f97\u5230\u4e00\u4e2a\u53ef\u4ee5\u63a5\u96e8\u6c34\u7684\u533a\u57df\uff0c\u8be5\u533a\u57df\u7684\u5bbd\u5ea6\u662f <code>i\u2212left\u22121<\/code>\uff0c\u9ad8\u5ea6\u662f <code>min\u2061(height[left],height[i])\u2212height[top]<\/code>\uff0c\u6839\u636e\u5bbd\u5ea6\u548c\u9ad8\u5ea6\u5373\u53ef\u8ba1\u7b97\u5f97\u5230\u8be5\u533a\u57df\u80fd\u63a5\u7684\u96e8\u6c34\u91cf\u3002<\/p>\n<p>\u4e3a\u4e86\u5f97\u5230 <code>left<\/code>\uff0c\u9700\u8981\u5c06 <code>top<\/code> \u51fa\u6808\u3002\u5728\u5bf9 <code>top<\/code> \u8ba1\u7b97\u80fd\u63a5\u7684\u96e8\u6c34\u91cf\u4e4b\u540e\uff0c<code>left<\/code>\u53d8\u6210\u65b0\u7684 <code>top<\/code>\uff0c\u91cd\u590d\u4e0a\u8ff0\u64cd\u4f5c\uff0c\u76f4\u5230\u6808\u53d8\u4e3a\u7a7a\uff0c\u6216\u8005\u6808\u9876\u4e0b\u6807\u5bf9\u5e94\u7684 <code>height<\/code> \u4e2d\u7684\u5143\u7d20\u5927\u4e8e\u6216\u7b49\u4e8e <code>height[i]<\/code>\u3002<\/p>\n<p>\u5728\u5bf9\u4e0b\u6807 i \u5904\u8ba1\u7b97\u80fd\u63a5\u7684\u96e8\u6c34\u91cf\u4e4b\u540e\uff0c\u5c06 i \u5165\u6808\uff0c\u7ee7\u7eed\u904d\u5386\u540e\u9762\u7684\u4e0b\u6807\uff0c\u8ba1\u7b97\u80fd\u63a5\u7684\u96e8\u6c34\u91cf\u3002\u904d\u5386\u7ed3\u675f\u4e4b\u540e\u5373\u53ef\u5f97\u5230\u80fd\u63a5\u7684\u96e8\u6c34\u603b\u91cf\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-95\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\/\/\u5355\u8c03\u6808\nclass Solution {\npublic:\n    int trap(vector&lt;int&gt;&amp; height) {\n\n        int h = height.size();\n        stack&lt;int&gt; stk;\n        int ans = 0;\n\n        for (int right = 0; right &lt; h; right++)\n        {\n\n            while (!stk.empty() &amp;&amp; height[right] &gt; height[stk.top()])\n            {\n                int top = stk.top();\n                stk.pop();\n\n                if (stk.empty()) break;\n\n                int left = stk.top();\n                int currentwidith = right - left - 1;\n                int currentheight = min(height[left], height[right]) - height[top];\n\n                ans += currentheight * currentwidith;\n                \n            }\n\n            stk.push(right);\n        }\n\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2018\/10\/22\/rainwatertrap.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2018\/10\/22\/rainwatertrap.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aheight = [0,1,0,2,1,0,1,3,2,1,2,1]\n\u8f93\u51fa\uff1a6\n\u89e3\u91ca\uff1a\u4e0a\u9762\u662f\u7531\u6570\u7ec4 [0,1,0,2,1,0,1,3,2,1,2,1] \u8868\u793a\u7684\u9ad8\u5ea6\u56fe\uff0c\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u53ef\u4ee5\u63a5 6 \u4e2a\u5355\u4f4d\u7684\u96e8\u6c34\uff08\u84dd\u8272\u90e8\u5206\u8868\u793a\u96e8\u6c34\uff09\u3002 \n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aheight = [4,2,0,3,2,5]\n\u8f93\u51fa\uff1a9\n<\/code><\/pre>\n<h2 id=\"\u4e8c\u53c9\u6811\">\u4e8c\u53c9\u6811<\/h2>\n<h3 id=\"\u4e8c\u53c9\u6811\u7684\u6700\u5927\u6df1\u5ea6\">\u4e8c\u53c9\u6811\u7684\u6700\u5927\u6df1\u5ea6<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-96\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u4e8c\u53c9\u6811 <code>root<\/code> \uff0c\u8fd4\u56de\u5176\u6700\u5927\u6df1\u5ea6\u3002<\/p>\n<p>\u4e8c\u53c9\u6811\u7684 <strong>\u6700\u5927\u6df1\u5ea6<\/strong> \u662f\u6307\u4ece\u6839\u8282\u70b9\u5230\u6700\u8fdc\u53f6\u5b50\u8282\u70b9\u7684\u6700\u957f\u8def\u5f84\u4e0a\u7684\u8282\u70b9\u6570\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-75\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u9700\u8981\u6ce8\u610f\u6211\u4eec\u4f7f\u7528\u5e7f\u5ea6\u4f18\u5148\u641c\u7d22 \u4f7f\u7528\u961f\u5217\u66f4\u597d<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-96\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;queue&gt;\n\nusing namespace std;\n\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\n\/\/\u6df1\u5ea6\u4f18\u5148\u641c\u7d22\nclass Solution {\npublic:\n    int maxDepth(TreeNode* root) {\n\n        if (root == nullptr)\n            return 0;\n\n        return max(maxDepth(root-&gt;left), maxDepth(root-&gt;right)) + 1;\n\n    }\n};\n\n\nclass Solution {\npublic:\n    int maxDepth(TreeNode* root) {\n        queue&lt;TreeNode*&gt; Q;\n\n        if (root == nullptr) return 0;\n\n        Q.push(root);\n\n        int ans = 0;\n        \n        while (!Q.empty())\n        {\n            int size = Q.size();\n\n            while (size &gt; 0)\n            {\n                TreeNode* node = Q.front();\n                Q.pop();\n\n                if (node-&gt;left != nullptr) Q.push(node-&gt;left);\n                if (node-&gt;right != nullptr) Q.push(node-&gt;right);\n\n                size--;\n            } \n\n            ans += 1;\n        }\n\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/26\/tmp-tree.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/26\/tmp-tree.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [3,9,20,null,null,15,7]\n\u8f93\u51fa\uff1a3\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [1,null,2]\n\u8f93\u51fa\uff1a2\n<\/code><\/pre>\n<h3 id=\"\u76f8\u540c\u7684\u6811\">\u76f8\u540c\u7684\u6811<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-97\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e24\u68f5\u4e8c\u53c9\u6811\u7684\u6839\u8282\u70b9 <code>p<\/code> \u548c <code>q<\/code> \uff0c\u7f16\u5199\u4e00\u4e2a\u51fd\u6570\u6765\u68c0\u9a8c\u8fd9\u4e24\u68f5\u6811\u662f\u5426\u76f8\u540c\u3002<\/p>\n<p>\u5982\u679c\u4e24\u4e2a\u6811\u5728\u7ed3\u6784\u4e0a\u76f8\u540c\uff0c\u5e76\u4e14\u8282\u70b9\u5177\u6709\u76f8\u540c\u7684\u503c\uff0c\u5219\u8ba4\u4e3a\u5b83\u4eec\u662f\u76f8\u540c\u7684\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-76\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6ca1\u4ec0\u4e48\u597d\u5206\u6790\u7684 \u8fd8\u662f\u8981\u597d\u597d\u7406\u89e3\u6df1\u5ea6\u4f18\u5148\u641c\u7d22<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-97\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;queue&gt;\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\n\/\/\u5e7f\u5ea6\u4f18\u5148\u641c\u7d22\nclass Solution {\npublic:\n    bool isSameTree(TreeNode* p, TreeNode* q) {\n\n        if (p == nullptr &amp;&amp; q == nullptr) return true;\n        if (p == nullptr &amp;&amp; q != nullptr) return false;\n        if (p != nullptr &amp;&amp; q == nullptr) return false;\n\n        queue&lt;TreeNode*&gt; Q1, Q2;\n\n        Q1.push(p);\n        Q2.push(q);\n\n        while (!Q1.empty() &amp;&amp; !Q2.empty())\n        {\n            int size_Q1 = Q1.size();\n            int size_Q2 = Q2.size();\n\n            while (size_Q1 &gt; 0 &amp;&amp; size_Q2&gt;0)\n            {\n                TreeNode* node1 = Q1.front(); Q1.pop();\n                TreeNode* node2 = Q2.front(); Q2.pop();\n\n                if (node1-&gt;val != node2-&gt;val)\n                {\n                    return false;\n                }\n\n                if (node1-&gt;left != nullptr) Q1.push(node1-&gt;left);\n                if (node1-&gt;right != nullptr) Q1.push(node1-&gt;right);\n\n                if (node2-&gt;left != nullptr) Q2.push(node2-&gt;left);\n                if (node2-&gt;right != nullptr) Q2.push(node2-&gt;right);\n\n                if (node1-&gt;left != nullptr &amp;&amp; node2-&gt;left == nullptr) return false;\n                if (node1-&gt;left == nullptr &amp;&amp; node2-&gt;left != nullptr) return false;\n\n                if (node1-&gt;right != nullptr &amp;&amp; node2-&gt;right == nullptr) return false;\n                if (node1-&gt;right == nullptr &amp;&amp; node2-&gt;right != nullptr) return false;\n\n                size_Q1--;\n                size_Q2--;\n            }\n        }\n\n        if (Q1.empty() &amp;&amp; Q2.empty())\n            return true;\n\n        return false;\n    }\n};\n\n\n\/\/\u6df1\u5ea6\u4f18\u5148\u641c\u7d22\nclass Solution {\npublic:\n    bool isSameTree(TreeNode* p, TreeNode* q) {\n\n        if (p == nullptr &amp;&amp; q == nullptr)\n        {\n            return true;\n        }\n        else\n        {\n            if (p == nullptr || q == nullptr)\n            {\n                return false;\n            }\n            else\n            {\n                if (p-&gt;val != q-&gt;val)\n                {\n                    return false;\n                }\n                else\n                {\n                    return isSameTree(p-&gt;left, q-&gt;left) &amp;&amp; isSameTree(p-&gt;right, q-&gt;right);\n                }\n            }\n        }\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/12\/20\/ex1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/12\/20\/ex1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ap = [1,2,3], q = [1,2,3]\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/12\/20\/ex2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/12\/20\/ex2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ap = [1,2], q = [1,null,2]\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/12\/20\/ex3.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/12\/20\/ex3.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ap = [1,2,1], q = [1,1,2]\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<h3 id=\"\u7ffb\u8f6c\u4e8c\u53c9\u6811\">\u7ffb\u8f6c\u4e8c\u53c9\u6811<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-98\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u68f5\u4e8c\u53c9\u6811\u7684\u6839\u8282\u70b9 <code>root<\/code> \uff0c\u7ffb\u8f6c\u8fd9\u68f5\u4e8c\u53c9\u6811\uff0c\u5e76\u8fd4\u56de\u5176\u6839\u8282\u70b9\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-77\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8fd9\u4e2a\u9898\u76ee\u4e3a\u4ec0\u4e48\u53ef\u4ee5\u4f7f\u7528\u9012\u5f52\uff0c\u6211\u4eec\u5206\u6790\u4e00\u4e0b<\/p>\n<p>\u8fd9\u4e2a\u9898\u76ee\u7684\u5927\u95ee\u9898\u662f\u7ffb\u8f6c\u5de6\u53f3\u5b50\u6811<\/p>\n<p>\u800c\u62c6\u5206\u4e3a\u5c0f\u95ee\u9898\uff0c\u5bf9\u4e8e\u6bcf\u4e00\u4e2a\u5b50\u6811\u4e5f\u9700\u8981\u7ffb\u8f6c\u5b50\u6811\u7684\u5de6\u53f3\u5b50\u6811<\/p>\n<p>\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u9012\u5f52<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-98\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\nclass Solution {\npublic:\n    TreeNode* invertTree(TreeNode* root) {\n\n        if (root == nullptr) return root;\n\n        TreeNode* left = invertTree(root-&gt;left);\n        TreeNode* right = invertTree(root-&gt;right);\n       \n        root-&gt;left = right;\n        root-&gt;right = left;\n\n        return root;\n        \n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/03\/14\/invert1-tree.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/03\/14\/invert1-tree.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [4,2,7,1,3,6,9]\n\u8f93\u51fa\uff1a[4,7,2,9,6,3,1]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/03\/14\/invert2-tree.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/03\/14\/invert2-tree.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [2,1,3]\n\u8f93\u51fa\uff1a[2,3,1]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = []\n\u8f93\u51fa\uff1a[]\n<\/code><\/pre>\n<h3 id=\"\u5bf9\u79f0\u4e8c\u53c9\u6811\">\u5bf9\u79f0\u4e8c\u53c9\u6811<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-99\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u4e8c\u53c9\u6811\u7684\u6839\u8282\u70b9 <code>root<\/code> \uff0c \u68c0\u67e5\u5b83\u662f\u5426\u8f74\u5bf9\u79f0\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-78\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6211\u89c9\u5f97\u8fd9\u91cc\u5f88\u5de7\u5999\u7684\u70b9\u5c31\u5728\u4e8echeck\u51fd\u6570\uff0c\u6709\u4e86\u8fd9\u4e2a\u6211\u4eec\u5c31\u53ef\u4ee5\u5b9e\u73b0\u503c\u662f\u5426\u76f8\u540c\u7684\u5224\u65ad\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-99\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;queue&gt;\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\n\n\/\/\u6df1\u5ea6\u4f18\u5148\u641c\u7d22\nclass Solution {\npublic:\n    bool isSymmetric(TreeNode* root) {\n\n        return check(root, root);\n \n\n    }\n\n    bool check(TreeNode* p, TreeNode* q)\n    {\n        if (p == nullptr &amp;&amp; q == nullptr)\n        {\n            return true;\n        }\n        else\n        {\n            if (p == nullptr || q == nullptr)\n            {\n                return false;\n            }\n            else\n            {\n                return (p-&gt;val == q-&gt;val) &amp;&amp; (check(p-&gt;left, q-&gt;right)) &amp;&amp; (check(p-&gt;right, q-&gt;left));\n            }\n        }\n\n    }\n};\n\nclass Solution {\npublic:\n    bool isSymmetric(TreeNode* root) {\n        return check(root, root);\n    }\n\n    bool check(TreeNode* u, TreeNode* v)\n    {\n        queue&lt;TreeNode*&gt; q;\n        q.push(u);\n        q.push(v);\n\n        while (!q.empty())\n        {\n            u = q.front(); q.pop();\n            v = q.front(); q.pop();\n\n            if (!u &amp;&amp; !v) continue;\n            if ((!u || !v) || (u-&gt;val != v-&gt;val)) return false;\n\n            q.push(u-&gt;left);\n            q.push(v-&gt;right);\n\n            q.push(u-&gt;right);\n            q.push(v-&gt;left);\n        }\n        return true;\n    } \n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic.leetcode.cn\/1698026966-JDYPDU-image.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic.leetcode.cn\/1698026966-JDYPDU-image.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [1,2,2,3,4,4,3]\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic.leetcode.cn\/1698027008-nPFLbM-image.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic.leetcode.cn\/1698027008-nPFLbM-image.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [1,2,2,null,3,null,3]\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<h3 id=\"\u4ece\u524d\u5e8f\u4e0e\u4e2d\u5e8f\u904d\u5386\u5e8f\u5217\u6784\u9020\u4e8c\u53c9\u6811\">\u4ece\u524d\u5e8f\u4e0e\u4e2d\u5e8f\u904d\u5386\u5e8f\u5217\u6784\u9020\u4e8c\u53c9\u6811<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-100\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e24\u4e2a\u6574\u6570\u6570\u7ec4 <code>preorder<\/code> \u548c <code>inorder<\/code> \uff0c\u5176\u4e2d <code>preorder<\/code> \u662f\u4e8c\u53c9\u6811\u7684<strong>\u5148\u5e8f\u904d\u5386<\/strong>\uff0c <code>inorder<\/code> \u662f\u540c\u4e00\u68f5\u6811\u7684<strong>\u4e2d\u5e8f\u904d\u5386<\/strong>\uff0c\u8bf7\u6784\u9020\u4e8c\u53c9\u6811\u5e76\u8fd4\u56de\u5176\u6839\u8282\u70b9\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-79\">\u9898\u76ee\u5206\u6790<\/h4>\n<ol start=\"\">\n<li><strong>\u4e8c\u53c9\u6811\u7684\u904d\u5386<\/strong>\uff1a\n<ul>\n<li><strong>\u524d\u5e8f\u904d\u5386<\/strong>\uff1a\u9996\u5148\u8bbf\u95ee\u6839\u8282\u70b9\uff0c\u7136\u540e\u9012\u5f52\u5730\u904d\u5386\u5de6\u5b50\u6811\uff0c\u6700\u540e\u9012\u5f52\u5730\u904d\u5386\u53f3\u5b50\u6811\u3002<\/li>\n<li><strong>\u4e2d\u5e8f\u904d\u5386<\/strong>\uff1a\u9996\u5148\u9012\u5f52\u5730\u904d\u5386\u5de6\u5b50\u6811\uff0c\u7136\u540e\u8bbf\u95ee\u6839\u8282\u70b9\uff0c\u6700\u540e\u9012\u5f52\u5730\u904d\u5386\u53f3\u5b50\u6811\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u91cd\u5efa\u4e8c\u53c9\u6811<\/strong>\uff1a\n<ul>\n<li>\u7531\u4e8e\u524d\u5e8f\u904d\u5386\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u603b\u662f\u6811\u7684\u6839\u8282\u70b9\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u8fd9\u4e2a\u5143\u7d20\u5728\u4e2d\u5e8f\u904d\u5386\u4e2d\u627e\u5230\u6839\u8282\u70b9\u7684\u4f4d\u7f6e\u3002<\/li>\n<li>\u5728\u4e2d\u5e8f\u904d\u5386\u4e2d\uff0c\u6839\u8282\u70b9\u5de6\u4fa7\u7684\u6240\u6709\u5143\u7d20\u6784\u6210\u4e86\u5de6\u5b50\u6811\uff0c\u53f3\u4fa7\u7684\u6240\u6709\u5143\u7d20\u6784\u6210\u4e86\u53f3\u5b50\u6811\u3002<\/li>\n<li>\u6839\u636e\u5de6\u53f3\u5b50\u6811\u7684\u8282\u70b9\u6570\u76ee\uff0c\u6211\u4eec\u53ef\u4ee5\u5728\u524d\u5e8f\u904d\u5386\u4e2d\u5212\u5206\u51fa\u5de6\u53f3\u5b50\u6811\u7684\u5143\u7d20\u8303\u56f4\u3002<\/li>\n<li>\u901a\u8fc7\u9012\u5f52\u7684\u65b9\u5f0f\uff0c\u6211\u4eec\u53ef\u4ee5\u5bf9\u5de6\u53f3\u5b50\u6811\u91cd\u590d\u4e0a\u8ff0\u8fc7\u7a0b\uff0c\u76f4\u5230\u6240\u6709\u7684\u8282\u70b9\u90fd\u88ab\u91cd\u5efa\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-100\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\n\/\/\u9012\u5f52\nclass Solution {\nprivate:\n    unordered_map&lt;int, int&gt; index;\n\npublic:\n    TreeNode* myBuildTree(const vector&lt;int&gt;&amp; preorder, const vector&lt;int&gt;&amp; inorder, int preorder_left, int preorder_right, int inorder_left, int inorder_right) {\n        if (preorder_left &gt; preorder_right) {\n            return nullptr;\n        }\n\n        \/\/ \u524d\u5e8f\u904d\u5386\u4e2d\u7684\u7b2c\u4e00\u4e2a\u8282\u70b9\u5c31\u662f\u6839\u8282\u70b9\n        int preorder_root = preorder_left;\n        \/\/ \u5728\u4e2d\u5e8f\u904d\u5386\u4e2d\u5b9a\u4f4d\u6839\u8282\u70b9\n        int inorder_root = index[preorder[preorder_root]];\n\n        \/\/ \u5148\u628a\u6839\u8282\u70b9\u5efa\u7acb\u51fa\u6765\n        TreeNode* root = new TreeNode(preorder[preorder_root]);\n        \/\/ \u5f97\u5230\u5de6\u5b50\u6811\u4e2d\u7684\u8282\u70b9\u6570\u76ee\n        int size_left_subtree = inorder_root - inorder_left;\n        \/\/ \u9012\u5f52\u5730\u6784\u9020\u5de6\u5b50\u6811\uff0c\u5e76\u8fde\u63a5\u5230\u6839\u8282\u70b9\n        \/\/ \u5148\u5e8f\u904d\u5386\u4e2d\u300c\u4ece \u5de6\u8fb9\u754c+1 \u5f00\u59cb\u7684 size_left_subtree\u300d\u4e2a\u5143\u7d20\u5c31\u5bf9\u5e94\u4e86\u4e2d\u5e8f\u904d\u5386\u4e2d\u300c\u4ece \u5de6\u8fb9\u754c \u5f00\u59cb\u5230 \u6839\u8282\u70b9\u5b9a\u4f4d-1\u300d\u7684\u5143\u7d20\n        root-&gt;left = myBuildTree(preorder, inorder, preorder_left + 1, preorder_left + size_left_subtree, inorder_left, inorder_root - 1);\n        \/\/ \u9012\u5f52\u5730\u6784\u9020\u53f3\u5b50\u6811\uff0c\u5e76\u8fde\u63a5\u5230\u6839\u8282\u70b9\n        \/\/ \u5148\u5e8f\u904d\u5386\u4e2d\u300c\u4ece \u5de6\u8fb9\u754c+1+\u5de6\u5b50\u6811\u8282\u70b9\u6570\u76ee \u5f00\u59cb\u5230 \u53f3\u8fb9\u754c\u300d\u7684\u5143\u7d20\u5c31\u5bf9\u5e94\u4e86\u4e2d\u5e8f\u904d\u5386\u4e2d\u300c\u4ece \u6839\u8282\u70b9\u5b9a\u4f4d+1 \u5230 \u53f3\u8fb9\u754c\u300d\u7684\u5143\u7d20\n        root-&gt;right = myBuildTree(preorder, inorder, preorder_left + size_left_subtree + 1, preorder_right, inorder_root + 1, inorder_right);\n        return root;\n    }\n\n    TreeNode* buildTree(vector&lt;int&gt;&amp; preorder, vector&lt;int&gt;&amp; inorder) {\n        int n = preorder.size();\n        \/\/ \u6784\u9020\u54c8\u5e0c\u6620\u5c04\uff0c\u5e2e\u52a9\u6211\u4eec\u5feb\u901f\u5b9a\u4f4d\u6839\u8282\u70b9\n        for (int i = 0; i &lt; n; ++i) {\n            index[inorder[i]] = i;\n        }\n        return myBuildTree(preorder, inorder, 0, n - 1, 0, n - 1);\n    }\n};\n\nclass Solution {\npublic:\n    TreeNode *buildTree(vector&lt;int&gt; &amp;preorder, vector&lt;int&gt; &amp;inorder) {\n        int n = preorder.size();\n        unordered_map&lt;int, int&gt; index;\n        for (int i = 0; i &lt; n; i++) {\n            index[inorder[i]] = i;\n        }\n\n        function&lt;TreeNode*(int, int, int, int)&gt; dfs = [&amp;](int pre_l, int pre_r, int in_l, int in_r) -&gt; TreeNode* {\n            if (pre_l == pre_r) { \/\/ \u7a7a\u8282\u70b9\n                return nullptr;\n            }\n            int left_size = index[preorder[pre_l]] - in_l; \/\/ \u5de6\u5b50\u6811\u7684\u5927\u5c0f\n            TreeNode *left = dfs(pre_l + 1, pre_l + 1 + left_size, in_l, in_l + left_size);\n            TreeNode *right = dfs(pre_l + 1 + left_size, pre_r, in_l + 1 + left_size, in_r);\n            return new TreeNode(preorder[pre_l], left, right);\n        };\n        return dfs(0, n, 0, n); \/\/ \u5de6\u95ed\u53f3\u5f00\u533a\u95f4\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/02\/19\/tree.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/02\/19\/tree.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]\n\u8f93\u51fa: [3,9,20,null,null,15,7]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: preorder = [-1], inorder = [-1]\n\u8f93\u51fa: [-1]\n<\/code><\/pre>\n<h3 id=\"\u4ece\u4e2d\u5e8f\u4e0e\u540e\u5e8f\u904d\u5386\u5e8f\u5217\u6784\u9020\u4e8c\u53c9\u6811\">\u4ece\u4e2d\u5e8f\u4e0e\u540e\u5e8f\u904d\u5386\u5e8f\u5217\u6784\u9020\u4e8c\u53c9\u6811<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-101\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e24\u4e2a\u6574\u6570\u6570\u7ec4 <code>inorder<\/code> \u548c <code>postorder<\/code> \uff0c\u5176\u4e2d <code>inorder<\/code> \u662f\u4e8c\u53c9\u6811\u7684\u4e2d\u5e8f\u904d\u5386\uff0c <code>postorder<\/code> \u662f\u540c\u4e00\u68f5\u6811\u7684\u540e\u5e8f\u904d\u5386\uff0c\u8bf7\u4f60\u6784\u9020\u5e76\u8fd4\u56de\u8fd9\u9897 <em>\u4e8c\u53c9\u6811<\/em> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-80\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-101\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\/\/\u9012\u5f52\nclass Solution {\n    int post_idx;\n    unordered_map&lt;int, int&gt; idx_map;\npublic:\n    TreeNode* helper(int in_left, int in_right, vector&lt;int&gt;&amp; inorder, vector&lt;int&gt;&amp; postorder) {\n        \/\/ \u5982\u679c\u8fd9\u91cc\u6ca1\u6709\u8282\u70b9\u6784\u9020\u4e8c\u53c9\u6811\u4e86\uff0c\u5c31\u7ed3\u675f\n        if (in_left &gt; in_right) {\n            return nullptr;\n        }\n\n        \/\/ \u9009\u62e9 post_idx \u4f4d\u7f6e\u7684\u5143\u7d20\u4f5c\u4e3a\u5f53\u524d\u5b50\u6811\u6839\u8282\u70b9\n        int root_val = postorder[post_idx];\n        TreeNode* root = new TreeNode(root_val);\n\n        \/\/ \u6839\u636e root \u6240\u5728\u4f4d\u7f6e\u5206\u6210\u5de6\u53f3\u4e24\u68f5\u5b50\u6811\n        int index = idx_map[root_val];\n\n        \/\/ \u4e0b\u6807\u51cf\u4e00\n        post_idx--;\n        \/\/ \u6784\u9020\u53f3\u5b50\u6811\n        root-&gt;right = helper(index + 1, in_right, inorder, postorder);\n        \/\/ \u6784\u9020\u5de6\u5b50\u6811\n        root-&gt;left = helper(in_left, index - 1, inorder, postorder);\n        return root;\n    }\n    TreeNode* buildTree(vector&lt;int&gt;&amp; inorder, vector&lt;int&gt;&amp; postorder) {\n        \/\/ \u4ece\u540e\u5e8f\u904d\u5386\u7684\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u5f00\u59cb\n        post_idx = (int)postorder.size() - 1;\n\n        \/\/ \u5efa\u7acb\uff08\u5143\u7d20\uff0c\u4e0b\u6807\uff09\u952e\u503c\u5bf9\u7684\u54c8\u5e0c\u8868\n        int idx = 0;\n        for (auto&amp; val : inorder) {\n            idx_map[val] = idx++;\n        }\n        return helper(0, (int)inorder.size() - 1, inorder, postorder);\n    }\n};\n\nclass Solution {\npublic:\n    TreeNode *buildTree(vector&lt;int&gt; &amp;inorder, vector&lt;int&gt; &amp;postorder) {\n        int n = inorder.size();\n        unordered_map&lt;int, int&gt; index;\n        for (int i = 0; i &lt; n; i++) {\n            index[inorder[i]] = i;\n        }\n\n        function&lt;TreeNode*(int, int, int, int)&gt; dfs = [&amp;](int in_l, int in_r, int post_l, int post_r) -&gt; TreeNode* {\n            if (post_l == post_r) { \/\/ \u7a7a\u8282\u70b9\n                return nullptr;\n            }\n            int left_size = index[postorder[post_r - 1]] - in_l; \/\/ \u5de6\u5b50\u6811\u7684\u5927\u5c0f\n            TreeNode *left = dfs(in_l, in_l + left_size, post_l, post_l + left_size);\n            TreeNode *right = dfs(in_l + left_size + 1, in_r, post_l + left_size, post_r - 1);\n            return new TreeNode(postorder[post_r - 1], left, right);\n        };\n        return dfs(0, n, 0, n); \/\/ \u5de6\u95ed\u53f3\u5f00\u533a\u95f4\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/02\/19\/tree.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/02\/19\/tree.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ainorder = [9,3,15,20,7], postorder = [9,15,7,20,3]\n\u8f93\u51fa\uff1a[3,9,20,null,null,15,7]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ainorder = [-1], postorder = [-1]\n\u8f93\u51fa\uff1a[-1]\n<\/code><\/pre>\n<h3 id=\"\u4ece\u524d\u5e8f\u4e0e\u540e\u5e8f\u904d\u5386\u5e8f\u5217\u6784\u9020\u4e8c\u53c9\u6811\">\u4ece\u524d\u5e8f\u4e0e\u540e\u5e8f\u904d\u5386\u5e8f\u5217\u6784\u9020\u4e8c\u53c9\u6811<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-102\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e24\u4e2a\u6574\u6570\u6570\u7ec4\uff0c<code>preorder<\/code> \u548c <code>postorder<\/code> \uff0c\u5176\u4e2d <code>preorder<\/code> \u662f\u4e00\u4e2a\u5177\u6709 <strong>\u65e0\u91cd\u590d<\/strong> \u503c\u7684\u4e8c\u53c9\u6811\u7684\u524d\u5e8f\u904d\u5386\uff0c<code>postorder<\/code> \u662f\u540c\u4e00\u68f5\u6811\u7684\u540e\u5e8f\u904d\u5386\uff0c\u91cd\u6784\u5e76\u8fd4\u56de\u4e8c\u53c9\u6811\u3002<\/p>\n<p>\u5982\u679c\u5b58\u5728\u591a\u4e2a\u7b54\u6848\uff0c\u60a8\u53ef\u4ee5\u8fd4\u56de\u5176\u4e2d <strong>\u4efb\u4f55<\/strong> \u4e00\u4e2a\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-81\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-102\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n#include &lt;functional&gt;\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\nclass Solution {\npublic:\n    TreeNode* constructFromPrePost(vector&lt;int&gt;&amp; preorder, vector&lt;int&gt;&amp; postorder) {\n        int n = preorder.size();\n        vector&lt;int&gt; index(n + 1);\n        for (int i = 0; i &lt; n; i++) {\n            index[postorder[i]] = i;\n        }\n\n        function&lt;TreeNode* (int, int, int, int)&gt; dfs = [&amp;](int pre_l, int pre_r, int post_l, int post_r) -&gt; TreeNode* {\n            if (pre_l == pre_r) { \/\/ \u7a7a\u8282\u70b9\n                return nullptr;\n            }\n            if (pre_l + 1 == pre_r) { \/\/ \u53f6\u5b50\u8282\u70b9\n                return new TreeNode(preorder[pre_l]);\n            }\n            int left_size = index[preorder[pre_l + 1]] - post_l + 1; \/\/ \u5de6\u5b50\u6811\u7684\u5927\u5c0f\n            TreeNode* left = dfs(pre_l + 1, pre_l + 1 + left_size, post_l, post_l + left_size);\n            TreeNode* right = dfs(pre_l + 1 + left_size, pre_r, post_l + left_size, post_r - 1);\n            return new TreeNode(preorder[pre_l], left, right);\n            };\n        return dfs(0, n, 0, n); \/\/ \u5de6\u95ed\u53f3\u5f00\u533a\u95f4\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/07\/24\/lc-prepost.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/07\/24\/lc-prepost.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1apreorder = [1,2,4,5,3,6,7], postorder = [4,5,2,6,7,3,1]\n\u8f93\u51fa\uff1a[1,2,3,4,5,6,7]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: preorder = [1], postorder = [1]\n\u8f93\u51fa: [1]\n<\/code><\/pre>\n<h3 id=\"\u586b\u5145\u6bcf\u4e2a\u8282\u70b9\u7684\u4e0b\u4e00\u4e2a\u53f3\u4fa7\u8282\u70b9\u6307\u9488-ii\">\u586b\u5145\u6bcf\u4e2a\u8282\u70b9\u7684\u4e0b\u4e00\u4e2a\u53f3\u4fa7\u8282\u70b9\u6307\u9488 II<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-103\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u4e8c\u53c9\u6811\uff1a<\/p>\n<pre><code>struct Node {\n  int val;\n  Node *left;\n  Node *right;\n  Node *next;\n}\n<\/code><\/pre>\n<p>\u586b\u5145\u5b83\u7684\u6bcf\u4e2a next \u6307\u9488\uff0c\u8ba9\u8fd9\u4e2a\u6307\u9488\u6307\u5411\u5176\u4e0b\u4e00\u4e2a\u53f3\u4fa7\u8282\u70b9\u3002\u5982\u679c\u627e\u4e0d\u5230\u4e0b\u4e00\u4e2a\u53f3\u4fa7\u8282\u70b9\uff0c\u5219\u5c06 next \u6307\u9488\u8bbe\u7f6e\u4e3a <code>NULL<\/code> \u3002<\/p>\n<p>\u521d\u59cb\u72b6\u6001\u4e0b\uff0c\u6240\u6709 next \u6307\u9488\u90fd\u88ab\u8bbe\u7f6e\u4e3a <code>NULL<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-82\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u56e0\u4e3a\u5b83\u9898\u76ee\u7ed9\u51fa\u7684\u94fe\u8868\u987a\u5e8f\u5c5e\u4e8e\u5c42\u5e8f\u904d\u5386\uff0c\u6211\u4eec\u53ef\u4ee5\u627e\u5230\u6bcf\u4e00\u5c42\u6700\u5de6\u8fb9\u7684\u90a3\u4e2a\u8282\u70b9\uff0c\u7136\u540e\u5f53\u6211\u4eec\u518d\u4e00\u6b21\u8fdb\u5165\u8be5\u5c42\u65f6\uff0c\u6240\u5f97\u5230\u7684\u8282\u70b9\u5c31\u662f\u9700\u8981\u88ab\u8fde\u63a5\u7684\u8282\u70b9(next)<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-103\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;cstddef&gt;\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Node {\npublic:\n    int val;\n    Node* left;\n    Node* right;\n    Node* next;\n\n    Node() : val(0), left(NULL), right(NULL), next(NULL) {}\n\n    Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}\n\n    Node(int _val, Node* _left, Node* _right, Node* _next)\n        : val(_val), left(_left), right(_right), next(_next) {}\n};\n\n\nclass Solution {\npublic:\n    vector&lt;Node*&gt; pre;\n\n\npublic:\n    Node* connect(Node* root) {\n        dfs(root, 0);\n        return root;\n    }\n\n    void dfs(Node* node, int depth)\n    {\n        if (node == nullptr)\n        {\n            return;\n        }\n\n        if (depth == pre.size()) \/\/\u6b64\u65f6\u7684node\u76f8\u5f53\u4e8e\u4e00\u5c42\u6700\u5de6\u8fb9\u7684\u8282\u70b9\n        {\n            pre.emplace_back(node);\n        }\n        else\n        {\n            pre[depth]-&gt;next = node; \/\/\u5f53node\u4e0d\u662f\u8fd9\u4e00\u5c42\u6700\u5de6\u8fb9\u7684\u8282\u70b9\u65f6\n            pre[depth] = node;\n        }\n\n        dfs(node-&gt;left, depth + 1);\n        dfs(node-&gt;right, depth + 1);\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2019\/02\/15\/117_sample.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2019\/02\/15\/117_sample.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [1,2,3,4,5,null,7]\n\u8f93\u51fa\uff1a[1,#,2,3,#,4,5,7,#]\n\u89e3\u91ca\uff1a\u7ed9\u5b9a\u4e8c\u53c9\u6811\u5982\u56fe A \u6240\u793a\uff0c\u4f60\u7684\u51fd\u6570\u5e94\u8be5\u586b\u5145\u5b83\u7684\u6bcf\u4e2a next \u6307\u9488\uff0c\u4ee5\u6307\u5411\u5176\u4e0b\u4e00\u4e2a\u53f3\u4fa7\u8282\u70b9\uff0c\u5982\u56fe B \u6240\u793a\u3002\u5e8f\u5217\u5316\u8f93\u51fa\u6309\u5c42\u5e8f\u904d\u5386\u987a\u5e8f\uff08\u7531 next \u6307\u9488\u8fde\u63a5\uff09\uff0c'#' \u8868\u793a\u6bcf\u5c42\u7684\u672b\u5c3e\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = []\n\u8f93\u51fa\uff1a[]\n<\/code><\/pre>\n<h3 id=\"\u4e8c\u53c9\u6811\u5c55\u5f00\u4e3a\u94fe\u8868\">\u4e8c\u53c9\u6811\u5c55\u5f00\u4e3a\u94fe\u8868<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-104\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e8c\u53c9\u6811\u7684\u6839\u7ed3\u70b9 <code>root<\/code> \uff0c\u8bf7\u4f60\u5c06\u5b83\u5c55\u5f00\u4e3a\u4e00\u4e2a\u5355\u94fe\u8868\uff1a<\/p>\n<ul>\n<li>\u5c55\u5f00\u540e\u7684\u5355\u94fe\u8868\u5e94\u8be5\u540c\u6837\u4f7f\u7528 <code>TreeNode<\/code> \uff0c\u5176\u4e2d <code>right<\/code> \u5b50\u6307\u9488\u6307\u5411\u94fe\u8868\u4e2d\u4e0b\u4e00\u4e2a\u7ed3\u70b9\uff0c\u800c\u5de6\u5b50\u6307\u9488\u59cb\u7ec8\u4e3a <code>null<\/code> \u3002<\/li>\n<li>\u5c55\u5f00\u540e\u7684\u5355\u94fe\u8868\u5e94\u8be5\u4e0e\u4e8c\u53c9\u6811 <a href=\"https:\/\/baike.baidu.com\/item\/\u5148\u5e8f\u904d\u5386\/6442839?fr=aladdin\"><strong>\u5148\u5e8f\u904d\u5386<\/strong><\/a> \u987a\u5e8f\u76f8\u540c\u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-83\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5177\u4f53\u505a\u6cd5\u662f\uff0c\u5bf9\u4e8e\u5f53\u524d\u8282\u70b9\uff0c\u5982\u679c\u5176\u5de6\u5b50\u8282\u70b9\u4e0d\u4e3a\u7a7a\uff0c\u5219\u5728\u5176\u5de6\u5b50\u6811\u4e2d\u627e\u5230\u6700\u53f3\u8fb9\u7684\u8282\u70b9\uff0c\u4f5c\u4e3a\u524d\u9a71\u8282\u70b9\uff0c\u5c06\u5f53\u524d\u8282\u70b9\u7684\u53f3\u5b50\u8282\u70b9\u8d4b\u7ed9\u524d\u9a71\u8282\u70b9\u7684\u53f3\u5b50\u8282\u70b9\uff0c\u7136\u540e\u5c06\u5f53\u524d\u8282\u70b9\u7684\u5de6\u5b50\u8282\u70b9\u8d4b\u7ed9\u5f53\u524d\u8282\u70b9\u7684\u53f3\u5b50\u8282\u70b9\uff0c\u5e76\u5c06\u5f53\u524d\u8282\u70b9\u7684\u5de6\u5b50\u8282\u70b9\u8bbe\u4e3a\u7a7a\u3002\u5bf9\u5f53\u524d\u8282\u70b9\u5904\u7406\u7ed3\u675f\u540e\uff0c\u7ee7\u7eed\u5904\u7406\u94fe\u8868\u4e2d\u7684\u4e0b\u4e00\u4e2a\u8282\u70b9\uff0c\u76f4\u5230\u6240\u6709\u8282\u70b9\u90fd\u5904\u7406\u7ed3\u675f\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-104\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\nclass Solution {\npublic:\n    void flatten(TreeNode* root) {\n        vector&lt;TreeNode*&gt; l;\n        preorderTraversal(root, l);\n        int n = l.size();\n        for (int i = 1; i &lt; n; i++) {\n            TreeNode* prev = l.at(i - 1), * curr = l.at(i);\n            prev-&gt;left = nullptr;\n            prev-&gt;right = curr;\n        }\n    }\n\n    void preorderTraversal(TreeNode* root, vector&lt;TreeNode*&gt;&amp; l) {\n        if (root != NULL) {\n            l.push_back(root);\n            preorderTraversal(root-&gt;left, l);\n            preorderTraversal(root-&gt;right, l);\n        }\n    }\n};\n\nclass Solution {\npublic:\n    void flatten(TreeNode* root) {\n\n        TreeNode* cur = root;\n        while (cur != nullptr)\n        {\n            if (cur-&gt;left != nullptr)\n            {\n                TreeNode* next = cur-&gt;left;\n                TreeNode* predecessor = next;\n\n                while (predecessor-&gt;right != nullptr)\n                {\n                    predecessor = predecessor-&gt;right;\n                }\n\n                predecessor-&gt;right = cur-&gt;right;\n                cur-&gt;left = nullptr;\n                cur-&gt;right = next;\n            }\n\n            cur = cur-&gt;right;\n        }\n\n    }\n\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/01\/14\/flaten.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/01\/14\/flaten.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [1,2,5,3,4,null,6]\n\u8f93\u51fa\uff1a[1,null,2,null,3,null,4,null,5,null,6]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = []\n\u8f93\u51fa\uff1a[]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [0]\n\u8f93\u51fa\uff1a[0]\n<\/code><\/pre>\n<h3 id=\"\u8def\u5f84\u603b\u548c\">\u8def\u5f84\u603b\u548c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-105\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e8c\u53c9\u6811\u7684\u6839\u8282\u70b9 <code>root<\/code> \u548c\u4e00\u4e2a\u8868\u793a\u76ee\u6807\u548c\u7684\u6574\u6570 <code>targetSum<\/code> \u3002\u5224\u65ad\u8be5\u6811\u4e2d\u662f\u5426\u5b58\u5728 <strong>\u6839\u8282\u70b9\u5230\u53f6\u5b50\u8282\u70b9<\/strong> \u7684\u8def\u5f84\uff0c\u8fd9\u6761\u8def\u5f84\u4e0a\u6240\u6709\u8282\u70b9\u503c\u76f8\u52a0\u7b49\u4e8e\u76ee\u6807\u548c <code>targetSum<\/code> \u3002\u5982\u679c\u5b58\u5728\uff0c\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/p>\n<p><strong>\u53f6\u5b50\u8282\u70b9<\/strong> \u662f\u6307\u6ca1\u6709\u5b50\u8282\u70b9\u7684\u8282\u70b9\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-84\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u4e00\u770b\u5c31\u4f1a\uff0c\u4e00\u505a\u5c31\u5e9f<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-105\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;queue&gt;\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\n\nclass Solution {\npublic:\n\npublic:\n    bool hasPathSum(TreeNode* root, int targetSum) {\n\n        if (root == nullptr)\n            return false;\n\n        targetSum -= root-&gt;val;\n\n        if (root-&gt;left == root-&gt;right)\n            return targetSum == 0;\n\n        return hasPathSum(root-&gt;left, targetSum) || hasPathSum(root-&gt;right, targetSum);\n    }\n\n  \n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/01\/18\/pathsum1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/01\/18\/pathsum1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22\n\u8f93\u51fa\uff1atrue\n\u89e3\u91ca\uff1a\u7b49\u4e8e\u76ee\u6807\u548c\u7684\u6839\u8282\u70b9\u5230\u53f6\u8282\u70b9\u8def\u5f84\u5982\u4e0a\u56fe\u6240\u793a\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/01\/18\/pathsum2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/01\/18\/pathsum2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [1,2,3], targetSum = 5\n\u8f93\u51fa\uff1afalse\n\u89e3\u91ca\uff1a\u6811\u4e2d\u5b58\u5728\u4e24\u6761\u6839\u8282\u70b9\u5230\u53f6\u5b50\u8282\u70b9\u7684\u8def\u5f84\uff1a\n(1 --&gt; 2): \u548c\u4e3a 3\n(1 --&gt; 3): \u548c\u4e3a 4\n\u4e0d\u5b58\u5728 sum = 5 \u7684\u6839\u8282\u70b9\u5230\u53f6\u5b50\u8282\u70b9\u7684\u8def\u5f84\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [], targetSum = 0\n\u8f93\u51fa\uff1afalse\n\u89e3\u91ca\uff1a\u7531\u4e8e\u6811\u662f\u7a7a\u7684\uff0c\u6240\u4ee5\u4e0d\u5b58\u5728\u6839\u8282\u70b9\u5230\u53f6\u5b50\u8282\u70b9\u7684\u8def\u5f84\u3002\n<\/code><\/pre>\n<h3 id=\"\u6c42\u6839\u8282\u70b9\u5230\u53f6\u8282\u70b9\u6570\u5b57\u4e4b\u548c\">\u6c42\u6839\u8282\u70b9\u5230\u53f6\u8282\u70b9\u6570\u5b57\u4e4b\u548c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-106\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u4e8c\u53c9\u6811\u7684\u6839\u8282\u70b9 <code>root<\/code> \uff0c\u6811\u4e2d\u6bcf\u4e2a\u8282\u70b9\u90fd\u5b58\u653e\u6709\u4e00\u4e2a <code>0<\/code> \u5230 <code>9<\/code> \u4e4b\u95f4\u7684\u6570\u5b57\u3002<\/p>\n<p>\u6bcf\u6761\u4ece\u6839\u8282\u70b9\u5230\u53f6\u8282\u70b9\u7684\u8def\u5f84\u90fd\u4ee3\u8868\u4e00\u4e2a\u6570\u5b57\uff1a<\/p>\n<ul>\n<li>\u4f8b\u5982\uff0c\u4ece\u6839\u8282\u70b9\u5230\u53f6\u8282\u70b9\u7684\u8def\u5f84 <code>1 -&gt; 2 -&gt; 3<\/code> \u8868\u793a\u6570\u5b57 <code>123<\/code> \u3002<\/li>\n<\/ul>\n<p>\u8ba1\u7b97\u4ece\u6839\u8282\u70b9\u5230\u53f6\u8282\u70b9\u751f\u6210\u7684 <strong>\u6240\u6709\u6570\u5b57\u4e4b\u548c<\/strong> \u3002<\/p>\n<p><strong>\u53f6\u8282\u70b9<\/strong> \u662f\u6307\u6ca1\u6709\u5b50\u8282\u70b9\u7684\u8282\u70b9\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-85\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u529f\u592b\u4e0d\u8d1f\u6709\u5fc3\u4eba\uff0c\u6839\u636e\u524d\u8f88\u7684\u7ecf\u9a8c\uff0c\u8fd9\u9053\u9012\u5f52\u7ec8\u4e8e\u505a\u51fa\u6765\u5566\uff01<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-106\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\nclass Solution {\npublic:\n    int sumNumbers(TreeNode* root) {\n\n        int sum = 0;\n        vector&lt;int&gt; num;\n        auto ans = calculate(root,sum,num);\n        \n        int size = ans.size();\n        int Allsum = 0;\n\n        for (auto&amp; a : ans)\n        {\n            Allsum += a;\n        }\n\n        return Allsum;\n    }\n\n    vector&lt;int&gt; calculate(TreeNode* root, int sum,vector&lt;int&gt; num)\n    {\n        if (root == nullptr)\n        {\n            return num;\n        }\n\n        sum = sum * 10 + root-&gt;val;\n\n        if (root-&gt;left == root-&gt;right)\n        {\n            num.emplace_back(sum);\n        }\n\n        num = calculate(root-&gt;left, sum, num);\n        num = calculate(root-&gt;right, sum, num);\n\n        return num;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/02\/19\/num1tree.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/02\/19\/num1tree.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [1,2,3]\n\u8f93\u51fa\uff1a25\n\u89e3\u91ca\uff1a\n\u4ece\u6839\u5230\u53f6\u5b50\u8282\u70b9\u8def\u5f84 1-&gt;2 \u4ee3\u8868\u6570\u5b57 12\n\u4ece\u6839\u5230\u53f6\u5b50\u8282\u70b9\u8def\u5f84 1-&gt;3 \u4ee3\u8868\u6570\u5b57 13\n\u56e0\u6b64\uff0c\u6570\u5b57\u603b\u548c = 12 + 13 = 25\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/02\/19\/num2tree.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/02\/19\/num2tree.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [4,9,0,5,1]\n\u8f93\u51fa\uff1a1026\n\u89e3\u91ca\uff1a\n\u4ece\u6839\u5230\u53f6\u5b50\u8282\u70b9\u8def\u5f84 4-&gt;9-&gt;5 \u4ee3\u8868\u6570\u5b57 495\n\u4ece\u6839\u5230\u53f6\u5b50\u8282\u70b9\u8def\u5f84 4-&gt;9-&gt;1 \u4ee3\u8868\u6570\u5b57 491\n\u4ece\u6839\u5230\u53f6\u5b50\u8282\u70b9\u8def\u5f84 4-&gt;0 \u4ee3\u8868\u6570\u5b57 40\n\u56e0\u6b64\uff0c\u6570\u5b57\u603b\u548c = 495 + 491 + 40 = 1026\n<\/code><\/pre>\n<h3 id=\"\u4e8c\u53c9\u6811\u4e2d\u7684\u6700\u5927\u8def\u5f84\u548c\">\u4e8c\u53c9\u6811\u4e2d\u7684\u6700\u5927\u8def\u5f84\u548c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-107\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u4e8c\u53c9\u6811\u4e2d\u7684 <strong>\u8def\u5f84<\/strong> \u88ab\u5b9a\u4e49\u4e3a\u4e00\u6761\u8282\u70b9\u5e8f\u5217\uff0c\u5e8f\u5217\u4e2d\u6bcf\u5bf9\u76f8\u90bb\u8282\u70b9\u4e4b\u95f4\u90fd\u5b58\u5728\u4e00\u6761\u8fb9\u3002\u540c\u4e00\u4e2a\u8282\u70b9\u5728\u4e00\u6761\u8def\u5f84\u5e8f\u5217\u4e2d <strong>\u81f3\u591a\u51fa\u73b0\u4e00\u6b21<\/strong> \u3002\u8be5\u8def\u5f84 <strong>\u81f3\u5c11\u5305\u542b\u4e00\u4e2a<\/strong> \u8282\u70b9\uff0c\u4e14\u4e0d\u4e00\u5b9a\u7ecf\u8fc7\u6839\u8282\u70b9\u3002<\/p>\n<p><strong>\u8def\u5f84\u548c<\/strong> \u662f\u8def\u5f84\u4e2d\u5404\u8282\u70b9\u503c\u7684\u603b\u548c\u3002<\/p>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u4e8c\u53c9\u6811\u7684\u6839\u8282\u70b9 <code>root<\/code> \uff0c\u8fd4\u56de\u5176 <strong>\u6700\u5927\u8def\u5f84\u548c<\/strong> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-86\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u4e4b\u540e\u770b\u7075\u795e\u7684\u89e3\u6790\u5427\uff0c\u8fd9\u4e2a\u611f\u89c9\u8fd8\u662f\u6709\u70b9\u8ff7\u7cca<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-107\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;functional&gt;\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\nclass Solution {\npublic:\n    int maxPathSum(TreeNode* root) {\n\n        int ans = INT_MIN;\n\n        function&lt;int(TreeNode*)&gt; dfs = [&amp;](TreeNode* node) -&gt; int {\n            if (node == nullptr)\n                return 0;\n\n            int left_val = dfs(node-&gt;left);\n            int right_val = dfs(node-&gt;right);\n            ans = max(ans, left_val + right_val + node-&gt;val);\n\n            return max(max(left_val, right_val) + node-&gt;val, 0); \/\/\u8fd4\u56de\u4ee5\u5f53\u524d\u8282\u70b9\u4e3a\u7ec8\u70b9\u7684\u6700\u5927\u8def\u5f84\u548c\n            };\n\n        dfs(root);\n\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/10\/13\/exx1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/10\/13\/exx1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [1,2,3]\n\u8f93\u51fa\uff1a6\n\u89e3\u91ca\uff1a\u6700\u4f18\u8def\u5f84\u662f 2 -&gt; 1 -&gt; 3 \uff0c\u8def\u5f84\u548c\u4e3a 2 + 1 + 3 = 6\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/10\/13\/exx2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/10\/13\/exx2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [-10,9,20,null,null,15,7]\n\u8f93\u51fa\uff1a42\n\u89e3\u91ca\uff1a\u6700\u4f18\u8def\u5f84\u662f 15 -&gt; 20 -&gt; 7 \uff0c\u8def\u5f84\u548c\u4e3a 15 + 20 + 7 = 42\n<\/code><\/pre>\n<h3 id=\"\u5b8c\u5168\u4e8c\u53c9\u6811\u7684\u8282\u70b9\u4e2a\u6570\">\u5b8c\u5168\u4e8c\u53c9\u6811\u7684\u8282\u70b9\u4e2a\u6570<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-108\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u68f5 <strong>\u5b8c\u5168\u4e8c\u53c9\u6811<\/strong> \u7684\u6839\u8282\u70b9 <code>root<\/code> \uff0c\u6c42\u51fa\u8be5\u6811\u7684\u8282\u70b9\u4e2a\u6570\u3002<\/p>\n<p><a href=\"https:\/\/baike.baidu.com\/item\/\u5b8c\u5168\u4e8c\u53c9\u6811\/7773232?fr=aladdin\">\u5b8c\u5168\u4e8c\u53c9\u6811<\/a> \u7684\u5b9a\u4e49\u5982\u4e0b\uff1a\u5728\u5b8c\u5168\u4e8c\u53c9\u6811\u4e2d\uff0c\u9664\u4e86\u6700\u5e95\u5c42\u8282\u70b9\u53ef\u80fd\u6ca1\u586b\u6ee1\u5916\uff0c\u5176\u4f59\u6bcf\u5c42\u8282\u70b9\u6570\u90fd\u8fbe\u5230\u6700\u5927\u503c\uff0c\u5e76\u4e14\u6700\u4e0b\u9762\u4e00\u5c42\u7684\u8282\u70b9\u90fd\u96c6\u4e2d\u5728\u8be5\u5c42\u6700\u5de6\u8fb9\u7684\u82e5\u5e72\u4f4d\u7f6e\u3002\u82e5\u6700\u5e95\u5c42\u4e3a\u7b2c <code>h<\/code> \u5c42\uff0c\u5219\u8be5\u5c42\u5305\u542b <code>1~ 2h<\/code> \u4e2a\u8282\u70b9\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-87\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6839\u636e\u5b8c\u5168\u4e8c\u53c9\u6811\u7684\u6027\u8d28\uff0c\u6211\u4eec\u53ef\u4ee5\u6e05\u695a\u7684\u77e5\u9053\uff1a\u603b\u8282\u70b9\u6570 = \u5012\u6570\u7b2c\u4e8c\u5c42\u4ee5\u4e0a\u7684\u8282\u70b9\u6570 + \u6700\u540e\u4e00\u5c42\u7684\u8282\u70b9\u6570<\/p>\n<p>\u9664\u6700\u540e\u4e00\u5c42\u5916\uff0c\u8fd9\u68f5\u6811\u4e3a\u6ee1\u4e8c\u53c9\u6811\uff0c\u8282\u70b9\u6570\u4e3a\uff1a<code>2^depth_prev - 1<\/code>\uff0c<code>depth_prev<\/code>\u4e3a\u5012\u6570\u7b2c\u4e8c\u5c42\u6811\u7684\u6df1\u5ea6<br \/>\n\u6700\u540e\u4e00\u5c42\u7684\u8282\u70b9\u6570\u7684\u8303\u56f4\u662f <code>[1, 2^depth_prev]<\/code>\uff1b\u5e76\u4e14\u4f9d\u6b21\u9760\u5de6\u6392\u5217<br \/>\n\u6240\u4ee5\u73b0\u5728\u7684\u95ee\u9898\u5c31\u8f6c\u6362\u4e3a\u5224\u65ad\u6700\u540e\u4e00\u5c42\u8282\u70b9\u6570<\/p>\n<p>\u63a5\u4e0b\u6765\u662f\u5982\u4f55\u5224\u65ad\u6700\u540e\u4e00\u5c42\u67d0\u4e2a\u8282\u70b9\u662f\u5426\u5b58\u5728\uff0c\u4e5f\u5c31\u662f is_exist()\u51fd\u6570\uff1a<\/p>\n<p>\u7ed9\u5b9a\u6700\u540e\u4e00\u5c42\u67d0\u8282\u70b9\u7684\u4f4d\u7f6e\u7d22\u5f15 index\uff0c\u5c06\u4ed6\u548c\u5206\u754c\u7ebf\u6bd4\u5927\u5c0f\uff0c\u5c31\u53ef\u4ee5\u5224\u65ad\u8be5\u8282\u70b9\u5728\u5de6\u5b50\u6811\u8fd8\u662f\u53f3\u5b50\u6811<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-108\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;queue&gt;\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\nclass Solution {\npublic:\n    \/\/ \u6c42\u4e8c\u53c9\u6811\u7684\u6df1\u5ea6\n    int countLevels(TreeNode* root) {\n        int levels = 0;\n        while (root) {\n            root = root-&gt;left; levels += 1;\n        }\n        return levels;\n    }\n\n    \/*\n    * \u529f\u80fd\uff1a \u5224\u65ad\u6700\u540e\u4e00\u5c42\u7b2cindex\u4e2a\u7d22\u5f15\u662f\u5426\u5b58\u5728\n    * root\uff1a \u4e8c\u53c9\u6811\u6839\u8282\u70b9\n    * index\uff1a\u5224\u65ad\u6700\u540e\u4e00\u5c42\u7d22\u5f15\u4e3aindex\u7684\u8282\u70b9\u662f\u5426\u5b58\u5728, \u7d22\u5f15\u8303\u56f4\u662f[1, 2^depth]\n    * depth\uff1a\u5012\u6570\u7b2c\u4e8c\u5c42\u7684\u6df1\u5ea6, \u8fd9\u662f\u56e0\u4e3a\u6ee1\u4e8c\u53c9\u6811\u6700\u540e\u4e00\u5c42\u7684\u8282\u70b9\u6570\u7b49\u4e8e 2^depth\n    *\/\n    bool is_exist(TreeNode* root, int index, int depth) {\n        TreeNode* node = root;\n        while (depth) {\n            \/\/ \u6700\u540e\u4e00\u5c42\u5206\u754c\u7ebf\n            int mid = ((1 &lt;&lt; depth) &gt;&gt; 1);\n            if (index &gt; mid) {\n                \/\/ \u5982\u679c\u5728\u53f3\u5b50\u6811\uff0c\u9700\u8981\u66f4\u65b0\u7d22\u5f15\u503c\n                index -= mid;\n                node = node-&gt;right;\n            }\n            else {\n                node = node-&gt;left;\n            }\n            depth -= 1;\n        }\n        return node != nullptr;\n    }\n\n    int countNodes(TreeNode* root) {\n        \/\/ 3. \u4e8c\u5206\u67e5\u627e\n        if (root == nullptr) return 0;\n        \/\/ \u4e8c\u53c9\u6811\u6df1\u5ea6\n        int depth = countLevels(root);\n        \/\/ \u5012\u6570\u7b2c\u4e8c\u5c42\u6df1\u5ea6\n        int depth_prev = depth - 1;\n\n        int start = 1, end = (1 &lt;&lt; depth_prev), mid = 0;\n        while (start &lt;= end) {\n            mid = start + ((end - start) &gt;&gt; 1);\n            if (is_exist(root, mid, depth_prev)) start = mid + 1;\n            else end = mid - 1;\n        }\n        \/\/ start - 1\u4e3a\u6700\u540e\u4e00\u5c42\u8282\u70b9\u6570\n        int ret = (1 &lt;&lt; depth_prev) - 1 + start - 1;\n        return ret;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/01\/14\/complete.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/01\/14\/complete.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [1,2,3,4,5,6]\n\u8f93\u51fa\uff1a6\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = []\n\u8f93\u51fa\uff1a0\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [1]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<h3 id=\"\u4e8c\u53c9\u6811\u7684\u6700\u8fd1\u516c\u5171\u7956\u5148\">\u4e8c\u53c9\u6811\u7684\u6700\u8fd1\u516c\u5171\u7956\u5148<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-109\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u4e8c\u53c9\u6811, \u627e\u5230\u8be5\u6811\u4e2d\u4e24\u4e2a\u6307\u5b9a\u8282\u70b9\u7684\u6700\u8fd1\u516c\u5171\u7956\u5148\u3002<\/p>\n<p><a href=\"https:\/\/baike.baidu.com\/item\/\u6700\u8fd1\u516c\u5171\u7956\u5148\/8918834?fr=aladdin\">\u767e\u5ea6\u767e\u79d1<\/a>\u4e2d\u6700\u8fd1\u516c\u5171\u7956\u5148\u7684\u5b9a\u4e49\u4e3a\uff1a\u201c\u5bf9\u4e8e\u6709\u6839\u6811 T \u7684\u4e24\u4e2a\u8282\u70b9 p\u3001q\uff0c\u6700\u8fd1\u516c\u5171\u7956\u5148\u8868\u793a\u4e3a\u4e00\u4e2a\u8282\u70b9 x\uff0c\u6ee1\u8db3 x \u662f p\u3001q \u7684\u7956\u5148\u4e14 x \u7684\u6df1\u5ea6\u5c3d\u53ef\u80fd\u5927\uff08<strong>\u4e00\u4e2a\u8282\u70b9\u4e5f\u53ef\u4ee5\u662f\u5b83\u81ea\u5df1\u7684\u7956\u5148<\/strong>\uff09\u3002\u201d<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-88\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5bfb\u627e\u5de6\u5b50\u6811\u548c\u53f3\u5b50\u6811\uff0c\u5982\u679c\u540c\u65f6\u6ee1\u8db3\u5219\u8fd4\u56de\u4e00\u4e2a\u7956\u5148\u8282\u70b9\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-109\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;cstddef&gt;\n\n\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode(int x) : val(x), left(NULL), right(NULL) {}\n};\n\nclass Solution {\npublic:\n    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {\n\n        if (root == nullptr || root == p || root == q)\n        {\n            return root;\n        }\n\n        TreeNode* left = lowestCommonAncestor(root-&gt;left, p, q);\n        TreeNode* right = lowestCommonAncestor(root-&gt;right, p, q);\n\n        if (left &amp;&amp; right)\n        {\n            return root;\n        }\n\n        return left ? left : right;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2018\/12\/14\/binarytree.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2018\/12\/14\/binarytree.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1\n\u8f93\u51fa\uff1a3\n\u89e3\u91ca\uff1a\u8282\u70b9 5 \u548c\u8282\u70b9 1 \u7684\u6700\u8fd1\u516c\u5171\u7956\u5148\u662f\u8282\u70b9 3 \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2018\/12\/14\/binarytree.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2018\/12\/14\/binarytree.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4\n\u8f93\u51fa\uff1a5\n\u89e3\u91ca\uff1a\u8282\u70b9 5 \u548c\u8282\u70b9 4 \u7684\u6700\u8fd1\u516c\u5171\u7956\u5148\u662f\u8282\u70b9 5 \u3002\u56e0\u4e3a\u6839\u636e\u5b9a\u4e49\u6700\u8fd1\u516c\u5171\u7956\u5148\u8282\u70b9\u53ef\u4ee5\u4e3a\u8282\u70b9\u672c\u8eab\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [1,2], p = 1, q = 2\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<h3 id=\"\u4e8c\u53c9\u6811\u7684\u53f3\u89c6\u56fe\">\u4e8c\u53c9\u6811\u7684\u53f3\u89c6\u56fe<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-110\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u4e8c\u53c9\u6811\u7684 <strong>\u6839\u8282\u70b9<\/strong> <code>root<\/code>\uff0c\u60f3\u8c61\u81ea\u5df1\u7ad9\u5728\u5b83\u7684\u53f3\u4fa7\uff0c\u6309\u7167\u4ece\u9876\u90e8\u5230\u5e95\u90e8\u7684\u987a\u5e8f\uff0c\u8fd4\u56de\u4ece\u53f3\u4fa7\u6240\u80fd\u770b\u5230\u7684\u8282\u70b9\u503c\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-89\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u9012\u5f52\u53f3\u5b50\u6811\uff0c\u518d\u9012\u5f52\u5de6\u5b50\u6811\uff0c\u5f53\u67d0\u4e2a\u6df1\u5ea6\u9996\u6b21\u5230\u8fbe\u65f6\uff0c\u5bf9\u5e94\u7684\u8282\u70b9\u5c31\u5728\u53f3\u89c6\u56fe\u4e2d\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-110\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\nclass Solution {\n\npublic:\n    vector&lt;int&gt; ans;\n\n    vector&lt;int&gt; rightSideView(TreeNode* root) {\n\n        dfs(root, 0);\n        return ans;\n\n    }\n\n    void dfs(TreeNode* node, int depth)\n    {\n        if (node == nullptr)\n        {\n            return;\n        }\n\n        if (depth == ans.size())\n        {\n            ans.emplace_back(node-&gt;val);\n        }\n\n        dfs(node-&gt;right, depth + 1);\n        dfs(node-&gt;left, depth + 1);\n\n\n        return;\n    }\n\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/02\/14\/tree.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/02\/14\/tree.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165: [1,2,3,null,5,null,4]\n\u8f93\u51fa: [1,3,4]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: [1,null,3]\n\u8f93\u51fa: [1,3]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3:<\/strong><\/p>\n<pre><code>\u8f93\u5165: []\n\u8f93\u51fa: []\n<\/code><\/pre>\n<h3 id=\"\u4e8c\u53c9\u6811\u7684\u952f\u9f7f\u5f62\u5c42\u5e8f\u904d\u5386\">\u4e8c\u53c9\u6811\u7684\u952f\u9f7f\u5f62\u5c42\u5e8f\u904d\u5386<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-111\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e8c\u53c9\u6811\u7684\u6839\u8282\u70b9 <code>root<\/code> \uff0c\u8fd4\u56de\u5176\u8282\u70b9\u503c\u7684 <strong>\u952f\u9f7f\u5f62\u5c42\u5e8f\u904d\u5386<\/strong> \u3002\uff08\u5373\u5148\u4ece\u5de6\u5f80\u53f3\uff0c\u518d\u4ece\u53f3\u5f80\u5de6\u8fdb\u884c\u4e0b\u4e00\u5c42\u904d\u5386\uff0c\u4ee5\u6b64\u7c7b\u63a8\uff0c\u5c42\u4e0e\u5c42\u4e4b\u95f4\u4ea4\u66ff\u8fdb\u884c\uff09\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-90\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><code>ranges::reverse(temp);<\/code><\/p>\n<p>C++20\u4e2d\u65b0\u589e\u7684\u7ffb\u8f6c\u529f\u80fd\uff0c\u8fd9\u9053\u9898\u9700\u8981\u5b66\u4e60\u7684\u5c31\u662f\u8fd9\u4e2a<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-111\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;queue&gt;\n#include &lt;iostream&gt;\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\nclass Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; ans;\n\n    vector&lt;vector&lt;int&gt;&gt; zigzagLevelOrder(TreeNode* root) {\n\n        if (root == nullptr)\n            return ans;\n\n        queue&lt;TreeNode*&gt; Q;\n        Q.push(root);\n       \n\n        while (!Q.empty())\n        {\n            int size = Q.size();\n            vector&lt;int&gt; temp;\n\n\n            while (size &gt; 0)\n            {\n                TreeNode* node = Q.front();\n                Q.pop();\n\n                temp.emplace_back(node-&gt;val);\n\n               \n                if (node-&gt;left != nullptr) Q.push(node-&gt;left);\n                if (node-&gt;right != nullptr) Q.push(node-&gt;right);\n\n                size--;\n            }\n\n            if (ans.size() % 2) ranges::reverse(temp);\n           \n            ans.emplace_back(temp);\n        }\n\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/02\/19\/tree1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/02\/19\/tree1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [3,9,20,null,null,15,7]\n\u8f93\u51fa\uff1a[[3],[20,9],[15,7]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [1]\n\u8f93\u51fa\uff1a[[1]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = []\n\u8f93\u51fa\uff1a[]\n<\/code><\/pre>\n<h3 id=\"\u4e8c\u53c9\u641c\u7d22\u6811\u7684\u6700\u5c0f\u7edd\u5bf9\u5dee\">\u4e8c\u53c9\u641c\u7d22\u6811\u7684\u6700\u5c0f\u7edd\u5bf9\u5dee<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-112\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u4e8c\u53c9\u641c\u7d22\u6811\u7684\u6839\u8282\u70b9 <code>root<\/code> \uff0c\u8fd4\u56de <strong>\u6811\u4e2d\u4efb\u610f\u4e24\u4e0d\u540c\u8282\u70b9\u503c\u4e4b\u95f4\u7684\u6700\u5c0f\u5dee\u503c<\/strong> \u3002<\/p>\n<p>\u5dee\u503c\u662f\u4e00\u4e2a\u6b63\u6570\uff0c\u5176\u6570\u503c\u7b49\u4e8e\u4e24\u503c\u4e4b\u5dee\u7684\u7edd\u5bf9\u503c\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-91\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6839\u636e\u4e8c\u53c9\u641c\u7d22\u6811\u7684\u6027\u8d28\uff0c\u4ed6\u4eec\u7684\u6700\u5c0f\u7edd\u5bf9\u5dee\u4e00\u5b9a\u662f\u4e24\u4e2a\u76f8\u90bb\u8282\u70b9\uff0c\u6240\u4ee5\u6211\u4eec\u4f7f\u7528\u4e2d\u5e8f\u904d\u5386\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-112\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\nclass Solution {\npublic:\n\n    void dfs(TreeNode* root, int&amp; pre, int&amp; ans)\n    {\n        if (root == nullptr)\n        {\n            return;\n        }\n\n        dfs(root-&gt;left, pre, ans);\n        if (pre == -1)\n        {\n            pre = root-&gt;val;\n        }\n        else\n        {\n            ans = min(ans,root-&gt;val- pre);\n            pre = root-&gt;val;\n        }\n\n        dfs(root-&gt;right, pre, ans);\n\n\n    }\n\n\n    int getMinimumDifference(TreeNode* root) {\n        int ans = INT_MAX;\n        int pre = -1;\n\n        dfs(root, pre, ans);\n\n        return ans;\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/02\/05\/bst1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/02\/05\/bst1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [4,2,6,1,3]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/02\/05\/bst2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/02\/05\/bst2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [1,0,48,null,null,12,49]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<h3 id=\"\u4e8c\u53c9\u641c\u7d22\u6811\u4e2d\u7b2ck\u5c0f\u7684\u5143\u7d20\">\u4e8c\u53c9\u641c\u7d22\u6811\u4e2d\u7b2cK\u5c0f\u7684\u5143\u7d20<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-113\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u4e8c\u53c9\u641c\u7d22\u6811\u7684\u6839\u8282\u70b9 <code>root<\/code> \uff0c\u548c\u4e00\u4e2a\u6574\u6570 <code>k<\/code> \uff0c\u8bf7\u4f60\u8bbe\u8ba1\u4e00\u4e2a\u7b97\u6cd5\u67e5\u627e\u5176\u4e2d\u7b2c <code>k<\/code> \u4e2a\u6700\u5c0f\u5143\u7d20\uff08\u4ece 1 \u5f00\u59cb\u8ba1\u6570\uff09\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-92\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8fd9\u91cc\u6211\u4eec\u8981\u77e5\u9053K\u4ec0\u4e48\u65f6\u5019\u5f00\u59cb\u9700\u8981\u9012\u51cf\uff0c\u5c31\u662f\u5230\u6700\u5c0f\u8282\u70b9\u4ee5\u540e\uff0c\u90a3\u4e48\u6211\u4eec\u4e00\u5f00\u59cb\u5c31\u53ef\u4ee5\u9012\u5f52\u5230\u6700\u5c0f\u8282\u70b9\uff0c\u7136\u540e\u5f00\u59cb\u8fdb\u884c\u5224\u65ad\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-113\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n\nusing namespace std;\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\nclass Solution {\npublic:\n    int res;\n    int K;\n\n\n    int kthSmallest(TreeNode* root, int k) {\n        \n        this-&gt;K = k;\n        res = 1;\n        dfs(root);\n\n        return res;\n    }\n\n    void dfs(TreeNode* root)\n    {\n        if (root == nullptr)\n        {\n            return;\n        }\n\n        dfs(root-&gt;left);\n\n        if (K == 0) return;\n        if (--K == 0) res = root-&gt;val;\n\n        dfs(root-&gt;right);\n    }\n   \n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/01\/28\/kthtree1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/01\/28\/kthtree1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [3,1,4,null,2], k = 1\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/01\/28\/kthtree2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/01\/28\/kthtree2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [5,3,6,2,4,null,null,1], k = 3\n\u8f93\u51fa\uff1a3\n<\/code><\/pre>\n<h3 id=\"\u9a8c\u8bc1\u4e8c\u53c9\u641c\u7d22\u6811\">\u9a8c\u8bc1\u4e8c\u53c9\u641c\u7d22\u6811<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-114\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u4e8c\u53c9\u6811\u7684\u6839\u8282\u70b9 <code>root<\/code> \uff0c\u5224\u65ad\u5176\u662f\u5426\u662f\u4e00\u4e2a\u6709\u6548\u7684\u4e8c\u53c9\u641c\u7d22\u6811\u3002<\/p>\n<p><strong>\u6709\u6548<\/strong> \u4e8c\u53c9\u641c\u7d22\u6811\u5b9a\u4e49\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li>\u8282\u70b9\u7684\u5de6\u5b50\u6811\u53ea\u5305\u542b \u5c0f\u4e8e \u5f53\u524d\u8282\u70b9\u7684\u6570\u3002<\/li>\n<li>\u8282\u70b9\u7684\u53f3\u5b50\u6811\u53ea\u5305\u542b <strong>\u5927\u4e8e<\/strong> \u5f53\u524d\u8282\u70b9\u7684\u6570\u3002<\/li>\n<li>\u6240\u6709\u5de6\u5b50\u6811\u548c\u53f3\u5b50\u6811\u81ea\u8eab\u5fc5\u987b\u4e5f\u662f\u4e8c\u53c9\u641c\u7d22\u6811\u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-93\">\u9898\u76ee\u5206\u6790<\/h4>\n<ul>\n<li>\u524d\u5e8f\u904d\u5386\u5728\u67d0\u4e9b\u6570\u636e\u4e0b\u4e0d\u9700\u8981\u9012\u5f52\u5230\u53f6\u5b50\u8282\u70b9\u5c31\u80fd\u8fd4\u56de\uff08\u6bd4\u5982\u6839\u8282\u70b9\u4e0d\u6ee1\u8db3\u8981\u6c42\uff0c\u538b\u6839\u5c31\u4e0d\u4f1a\u5f80\u4e0b\u9012\u5f52\uff09\uff0c\u800c\u4e2d\u5e8f\u904d\u5386\u548c\u540e\u5e8f\u904d\u5386\u81f3\u5c11\u8981\u9012\u5f52\u5230\u4e00\u4e2a\u8fb9\u754c\uff0c\u4ece\u8fd9\u4e2a\u89d2\u5ea6\u4e0a\u6765\u8bf4\uff0c\u524d\u5e8f\u904d\u5386\u662f\u6700\u5feb\u7684\u3002<\/li>\n<li>\u4e2d\u5e8f\u904d\u5386\u5f88\u597d\u5730\u5229\u7528\u4e86\u4e8c\u53c9\u641c\u7d22\u6811\u7684\u6027\u8d28\uff0c\u4f7f\u7528\u5230\u7684\u53d8\u91cf\u6700\u5c11\u3002<\/li>\n<li>\u540e\u5e8f\u904d\u5386\u7684\u601d\u60f3\u662f\u6700\u901a\u7528\u7684\uff0c\u5373\u81ea\u5e95\u5411\u4e0a\u8ba1\u7b97\u5b50\u95ee\u9898\u7684\u8fc7\u7a0b\u3002\u60f3\u8981\u5b66\u597d\u52a8\u6001\u89c4\u5212\u7684\u8bdd\uff0c\u8bf7\u52a1\u5fc5\u638c\u63e1\u8fd9\u4e2a\u601d\u60f3\u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-114\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\/\/\u524d\u5e8f\u904d\u5386\nclass Solution {\npublic:\n    bool isValidBST(TreeNode* root, long left = LONG_MIN, long right = LONG_MAX) {\n        if (root == nullptr) {\n            return true;\n        }\n        long x = root-&gt;val;\n        return left &lt; x &amp;&amp; x &lt; right &amp;&amp;\n               isValidBST(root-&gt;left, left, x) &amp;&amp;\n               isValidBST(root-&gt;right, x, right);\n    }\n};\n\n\/\/\u4e2d\u5e8f\u904d\u5386\nclass Solution {\n    long pre = LONG_MIN;\npublic:\n    bool isValidBST(TreeNode* root) {\n        if (root == nullptr) {\n            return true;\n        }\n        if (!isValidBST(root-&gt;left) || root-&gt;val &lt;= pre) {\n            return false;\n        }\n        pre = root-&gt;val;\n        return isValidBST(root-&gt;right);\n    }\n};\n\n\/\/\u540e\u5e8f\u904d\u5386\nclass Solution {\n    pair&lt;long, long&gt; dfs(TreeNode* node) {\n        if (node == nullptr) {\n            return {LONG_MAX, LONG_MIN};\n        }\n        auto[l_min, l_max] = dfs(node-&gt;left);\n        auto[r_min, r_max] = dfs(node-&gt;right);\n        long x = node-&gt;val;\n        \/\/ \u4e5f\u53ef\u4ee5\u5728\u9012\u5f52\u5b8c\u5de6\u5b50\u6811\u4e4b\u540e\u7acb\u523b\u5224\u65ad\uff0c\u5982\u679c\u53d1\u73b0\u4e0d\u662f\u4e8c\u53c9\u641c\u7d22\u6811\uff0c\u5c31\u4e0d\u7528\u9012\u5f52\u53f3\u5b50\u6811\u4e86\n        if (x &lt;= l_max || x &gt;= r_min) {\n            return {LONG_MIN, LONG_MAX};\n        }\n        return {min(l_min, x), max(r_max, x)};\n    }\n\npublic:\n    bool isValidBST(TreeNode* root) {\n        return dfs(root).second != LONG_MAX;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/12\/01\/tree1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/12\/01\/tree1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [2,1,3]\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/12\/01\/tree2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/12\/01\/tree2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aroot = [5,1,4,null,null,3,6]\n\u8f93\u51fa\uff1afalse\n\u89e3\u91ca\uff1a\u6839\u8282\u70b9\u7684\u503c\u662f 5 \uff0c\u4f46\u662f\u53f3\u5b50\u8282\u70b9\u7684\u503c\u662f 4 \u3002\n<\/code><\/pre>\n<h2 id=\"\u56fe\">\u56fe<\/h2>\n<h3 id=\"\u5c9b\u5c7f\u6570\u91cf\">\u5c9b\u5c7f\u6570\u91cf<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-115\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u7531 <code>'1'<\/code>\uff08\u9646\u5730\uff09\u548c <code>'0'<\/code>\uff08\u6c34\uff09\u7ec4\u6210\u7684\u7684\u4e8c\u7ef4\u7f51\u683c\uff0c\u8bf7\u4f60\u8ba1\u7b97\u7f51\u683c\u4e2d\u5c9b\u5c7f\u7684\u6570\u91cf\u3002<\/p>\n<p>\u5c9b\u5c7f\u603b\u662f\u88ab\u6c34\u5305\u56f4\uff0c\u5e76\u4e14\u6bcf\u5ea7\u5c9b\u5c7f\u53ea\u80fd\u7531\u6c34\u5e73\u65b9\u5411\u548c\/\u6216\u7ad6\u76f4\u65b9\u5411\u4e0a\u76f8\u90bb\u7684\u9646\u5730\u8fde\u63a5\u5f62\u6210\u3002<\/p>\n<p>\u6b64\u5916\uff0c\u4f60\u53ef\u4ee5\u5047\u8bbe\u8be5\u7f51\u683c\u7684\u56db\u6761\u8fb9\u5747\u88ab\u6c34\u5305\u56f4\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-94\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u770b\u770b\u4ee3\u7801\uff0c\u5f88\u5bb9\u6613\u7406\u89e3\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-115\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;queue&gt;\n\nusing namespace std;\n\n\/\/DFS\nclass Solution {\npublic:\n    int dir[4][2] = { 0, 1, 1, 0, -1, 0, 0, -1 }; \/\/ \u56db\u4e2a\u65b9\u5411 \u4e0b \u53f3 \u5de6 \u4e0a\n    int numIslands(vector&lt;vector&lt;char&gt;&gt;&amp; grid) {\n        int x = grid.size();\n        int y = grid[0].size();\n\n        vector&lt;vector&lt;bool&gt;&gt; visited = vector&lt;vector&lt;bool&gt;&gt;(x, vector&lt;bool&gt;(y, false));\n\n        int result = 0;\n        for (int i = 0; i &lt; x; i++)\n        {\n            for (int j = 0; j &lt; y; j++)\n            {\n                if (!visited[i][j] &amp;&amp; grid[i][j] == '1')\n                {\n                    result++;\n                    dfs(grid, visited, i, j);\n                }\n            }\n        }\n\n        return result;\n    }\n\n    void dfs(vector&lt;vector&lt;char&gt;&gt;&amp; grid, vector&lt;vector&lt;bool&gt;&gt;&amp; visited, int x, int y)\n    {\n        for (int i = 0; i &lt; 4; i++)\n        {\n            int nextx = x + dir[i][0];\n            int nexty = y + dir[i][1];\n            if (nextx &lt; 0 || nextx &gt;= grid.size() || nexty &lt; 0 || nexty &gt;= grid[0].size())\n            {\n                continue;\n            }\n\n            if (!visited[nextx][nexty] &amp;&amp; grid[nextx][nexty] == '1')\n            {\n                visited[nextx][nexty] = true;\n                dfs(grid, visited, nextx, nexty);\n            }\n        }\n    }\n};\n\n\n\/\/BFS\nclass Solution {\nprivate:\n    int dir[4][2] = { 0, 1, 1, 0, -1, 0, 0, -1 }; \/\/ \u56db\u4e2a\u65b9\u5411\n    void bfs(vector&lt;vector&lt;char&gt;&gt;&amp; grid, vector&lt;vector&lt;bool&gt;&gt;&amp; visited, int x, int y) {\n        queue&lt;pair&lt;int, int&gt;&gt; que;\n        que.push({ x, y });\n        visited[x][y] = true; \/\/ \u53ea\u8981\u52a0\u5165\u961f\u5217\uff0c\u7acb\u523b\u6807\u8bb0\n        while (!que.empty()) {\n            pair&lt;int, int&gt; cur = que.front(); que.pop();\n            int curx = cur.first;\n            int cury = cur.second;\n            for (int i = 0; i &lt; 4; i++) {\n                int nextx = curx + dir[i][0];\n                int nexty = cury + dir[i][1];\n                if (nextx &lt; 0 || nextx &gt;= grid.size() || nexty &lt; 0 || nexty &gt;= grid[0].size()) continue;  \/\/ \u8d8a\u754c\u4e86\uff0c\u76f4\u63a5\u8df3\u8fc7\n                if (!visited[nextx][nexty] &amp;&amp; grid[nextx][nexty] == '1') {\n                    que.push({ nextx, nexty });\n                    visited[nextx][nexty] = true; \/\/ \u53ea\u8981\u52a0\u5165\u961f\u5217\u7acb\u523b\u6807\u8bb0\n                }\n            }\n        }\n    }\npublic:\n    int numIslands(vector&lt;vector&lt;char&gt;&gt;&amp; grid) {\n        int n = grid.size(), m = grid[0].size();\n        vector&lt;vector&lt;bool&gt;&gt; visited = vector&lt;vector&lt;bool&gt;&gt;(n, vector&lt;bool&gt;(m, false));\n\n        int result = 0;\n        for (int i = 0; i &lt; n; i++) {\n            for (int j = 0; j &lt; m; j++) {\n                if (!visited[i][j] &amp;&amp; grid[i][j] == '1') {\n                    result++; \/\/ \u9047\u5230\u6ca1\u8bbf\u95ee\u8fc7\u7684\u9646\u5730\uff0c+1\n                    bfs(grid, visited, i, j); \/\/ \u5c06\u4e0e\u5176\u94fe\u63a5\u7684\u9646\u5730\u90fd\u6807\u8bb0\u4e0a true\n                }\n            }\n        }\n        return result;\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1agrid = [\n  [\"1\",\"1\",\"1\",\"1\",\"0\"],\n  [\"1\",\"1\",\"0\",\"1\",\"0\"],\n  [\"1\",\"1\",\"0\",\"0\",\"0\"],\n  [\"0\",\"0\",\"0\",\"0\",\"0\"]\n]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1agrid = [\n  [\"1\",\"1\",\"0\",\"0\",\"0\"],\n  [\"1\",\"1\",\"0\",\"0\",\"0\"],\n  [\"0\",\"0\",\"1\",\"0\",\"0\"],\n  [\"0\",\"0\",\"0\",\"1\",\"1\"]\n]\n\u8f93\u51fa\uff1a3\n<\/code><\/pre>\n<h3 id=\"\u88ab\u56f4\u7ed5\u7684\u533a\u57df\">\u88ab\u56f4\u7ed5\u7684\u533a\u57df<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-116\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a <code>m x n<\/code> \u7684\u77e9\u9635 <code>board<\/code> \uff0c\u7531\u82e5\u5e72\u5b57\u7b26 <code>'X'<\/code> \u548c <code>'O'<\/code> \u7ec4\u6210\uff0c<strong>\u6355\u83b7<\/strong> \u6240\u6709 <strong>\u88ab\u56f4\u7ed5\u7684\u533a\u57df<\/strong>\uff1a<\/p>\n<ul>\n<li><strong>\u8fde\u63a5\uff1a<\/strong>\u4e00\u4e2a\u5355\u5143\u683c\u4e0e\u6c34\u5e73\u6216\u5782\u76f4\u65b9\u5411\u4e0a\u76f8\u90bb\u7684\u5355\u5143\u683c\u8fde\u63a5\u3002<\/li>\n<li><strong>\u533a\u57df\uff1a\u8fde\u63a5\u6240\u6709<\/strong> <code>'0'<\/code> \u7684\u5355\u5143\u683c\u6765\u5f62\u6210\u4e00\u4e2a\u533a\u57df\u3002<\/li>\n<li><strong>\u56f4\u7ed5\uff1a<\/strong>\u5982\u679c\u60a8\u53ef\u4ee5\u7528 <code>'X'<\/code> \u5355\u5143\u683c <strong>\u8fde\u63a5\u8fd9\u4e2a\u533a\u57df<\/strong>\uff0c\u5e76\u4e14\u533a\u57df\u4e2d\u6ca1\u6709\u4efb\u4f55\u5355\u5143\u683c\u4f4d\u4e8e <code>board<\/code> \u8fb9\u7f18\uff0c\u5219\u8be5\u533a\u57df\u88ab <code>'X'<\/code> \u5355\u5143\u683c\u56f4\u7ed5\u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-95\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5b9a\u4e49\u4e00\u4e2a visited \u4e8c\u7ef4\u6570\u7ec4\uff0c\u5355\u72ec\u6807\u8bb0\u5468\u8fb9\u7684&#8217;O&#8217;\uff0c\u7136\u540e\u904d\u5386\u5730\u56fe\u7684\u65f6\u5019\u540c\u65f6\u5bf9 \u6570\u7ec4board \u548c \u6570\u7ec4visited \u8fdb\u884c\u5224\u65ad\uff0c\u662f\u5426&#8217;O&#8217;\u6539\u6210&#8217;X&#8217;\u3002<\/p>\n<p>\u8fd9\u6837\u505a\u5176\u5b9e\u5c31\u6709\u70b9\u9ebb\u70e6\u4e86\uff0c\u4e0d\u7528\u989d\u5916\u5b9a\u4e49\u7a7a\u95f4\u4e86\uff0c\u6807\u8bb0\u5468\u8fb9\u7684&#8217;O&#8217;\uff0c\u53ef\u4ee5\u76f4\u63a5\u6539board\u7684\u6570\u503c\u4e3a\u5176\u4ed6\u7279\u6b8a\u503c\u3002<\/p>\n<p><strong>\u6df1\u641c\u6216\u8005\u5e7f\u641c\u5c06\u5730\u56fe\u5468\u8fb9\u7684&#8217;O&#8217;\u5168\u90e8\u6539\u6210&#8217;A&#8217;<\/strong><\/p>\n<p><strong>\u518d\u904d\u5386\u5730\u56fe\uff0c\u5c06&#8217;O&#8217;\u5168\u90e8\u6539\u6210&#8217;X&#8217;\uff08\u5730\u56fe\u4e2d\u95f4\u7684&#8217;O&#8217;\u6539\u6210\u4e86&#8217;X&#8217;\uff09\uff0c\u5c06&#8217;A&#8217;\u6539\u56de&#8217;O&#8217;\uff08\u4fdd\u7559\u7684\u5730\u56fe\u5468\u8fb9\u7684&#8217;O&#8217;\uff09<\/strong><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-116\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\nprivate:\n    int dir[4][2] = { -1, 0, 0, -1, 1, 0, 0, 1 }; \/\/ \u4fdd\u5b58\u56db\u4e2a\u65b9\u5411\n    void dfs(vector&lt;vector&lt;char&gt;&gt;&amp; board, int x, int y) {\n        board[x][y] = 'A';\n        for (int i = 0; i &lt; 4; i++) { \/\/ \u5411\u56db\u4e2a\u65b9\u5411\u904d\u5386\n            int nextx = x + dir[i][0];\n            int nexty = y + dir[i][1];\n            \/\/ \u8d85\u8fc7\u8fb9\u754c\n            if (nextx &lt; 0 || nextx &gt;= board.size() || nexty &lt; 0 || nexty &gt;= board[0].size()) continue;\n            \/\/ \u4e0d\u7b26\u5408\u6761\u4ef6\uff0c\u4e0d\u7ee7\u7eed\u904d\u5386\n            if (board[nextx][nexty] == 'X' || board[nextx][nexty] == 'A') continue;\n            dfs(board, nextx, nexty);\n        }\n        return;\n    }\n\npublic:\n    void solve(vector&lt;vector&lt;char&gt;&gt;&amp; board) {\n        int n = board.size(), m = board[0].size();\n        \/\/ \u6b65\u9aa4\u4e00\uff1a\n        \/\/ \u4ece\u5de6\u4fa7\u8fb9\uff0c\u548c\u53f3\u4fa7\u8fb9 \u5411\u4e2d\u95f4\u904d\u5386\n        for (int i = 0; i &lt; n; i++) {\n            if (board[i][0] == 'O') dfs(board, i, 0);\n            if (board[i][m - 1] == 'O') dfs(board, i, m - 1);\n        }\n\n        \/\/ \u4ece\u4e0a\u8fb9\u548c\u4e0b\u8fb9 \u5411\u4e2d\u95f4\u904d\u5386\n        for (int j = 0; j &lt; m; j++) {\n            if (board[0][j] == 'O') dfs(board, 0, j);\n            if (board[n - 1][j] == 'O') dfs(board, n - 1, j);\n        }\n        \/\/ \u6b65\u9aa4\u4e8c\uff1a\n        for (int i = 0; i &lt; n; i++) {\n            for (int j = 0; j &lt; m; j++) {\n                if (board[i][j] == 'O') board[i][j] = 'X';\n                if (board[i][j] == 'A') board[i][j] = 'O';\n            }\n        }\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><strong>\u8f93\u5165\uff1a<\/strong>board = [[&#8220;X&#8221;,&#8221;X&#8221;,&#8221;X&#8221;,&#8221;X&#8221;],[&#8220;X&#8221;,&#8221;O&#8221;,&#8221;O&#8221;,&#8221;X&#8221;],[&#8220;X&#8221;,&#8221;X&#8221;,&#8221;O&#8221;,&#8221;X&#8221;],[&#8220;X&#8221;,&#8221;O&#8221;,&#8221;X&#8221;,&#8221;X&#8221;]]<\/p>\n<p><strong>\u8f93\u51fa\uff1a<\/strong>[[&#8220;X&#8221;,&#8221;X&#8221;,&#8221;X&#8221;,&#8221;X&#8221;],[&#8220;X&#8221;,&#8221;X&#8221;,&#8221;X&#8221;,&#8221;X&#8221;],[&#8220;X&#8221;,&#8221;X&#8221;,&#8221;X&#8221;,&#8221;X&#8221;],[&#8220;X&#8221;,&#8221;O&#8221;,&#8221;X&#8221;,&#8221;X&#8221;]]<\/p>\n<p><strong>\u89e3\u91ca\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic.leetcode.cn\/1718167191-XNjUTG-image.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic.leetcode.cn\/1718167191-XNjUTG-image.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u5728\u4e0a\u56fe\u4e2d\uff0c\u5e95\u90e8\u7684\u533a\u57df\u6ca1\u6709\u88ab\u6355\u83b7\uff0c\u56e0\u4e3a\u5b83\u5728 board \u7684\u8fb9\u7f18\u5e76\u4e14\u4e0d\u80fd\u88ab\u56f4\u7ed5\u3002<\/p>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><strong>\u8f93\u5165\uff1a<\/strong>board = [[&#8220;X&#8221;]]<\/p>\n<p><strong>\u8f93\u51fa\uff1a<\/strong>[[&#8220;X&#8221;]]<\/p>\n<h3 id=\"\u514b\u9686\u56fe\">\u514b\u9686\u56fe<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-117\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u65e0\u5411 <strong><a href=\"https:\/\/baike.baidu.com\/item\/\u8fde\u901a\u56fe\/6460995?fr=aladdin\">\u8fde\u901a<\/a><\/strong> \u56fe\u4e2d\u4e00\u4e2a\u8282\u70b9\u7684\u5f15\u7528\uff0c\u8bf7\u4f60\u8fd4\u56de\u8be5\u56fe\u7684 <a href=\"https:\/\/baike.baidu.com\/item\/\u6df1\u62f7\u8d1d\/22785317?fr=aladdin\"><strong>\u6df1\u62f7\u8d1d<\/strong><\/a>\uff08\u514b\u9686\uff09\u3002<\/p>\n<p>\u56fe\u4e2d\u7684\u6bcf\u4e2a\u8282\u70b9\u90fd\u5305\u542b\u5b83\u7684\u503c <code>val<\/code>\uff08<code>int<\/code>\uff09 \u548c\u5176\u90bb\u5c45\u7684\u5217\u8868\uff08<code>list[Node]<\/code>\uff09\u3002<\/p>\n<pre><code>class Node {\n    public int val;\n    public List&lt;Node&gt; neighbors;\n}\n<\/code><\/pre>\n<p><strong>\u6d4b\u8bd5\u7528\u4f8b\u683c\u5f0f\uff1a<\/strong><\/p>\n<p>\u7b80\u5355\u8d77\u89c1\uff0c\u6bcf\u4e2a\u8282\u70b9\u7684\u503c\u90fd\u548c\u5b83\u7684\u7d22\u5f15\u76f8\u540c\u3002\u4f8b\u5982\uff0c\u7b2c\u4e00\u4e2a\u8282\u70b9\u503c\u4e3a 1\uff08<code>val = 1<\/code>\uff09\uff0c\u7b2c\u4e8c\u4e2a\u8282\u70b9\u503c\u4e3a 2\uff08<code>val = 2<\/code>\uff09\uff0c\u4ee5\u6b64\u7c7b\u63a8\u3002\u8be5\u56fe\u5728\u6d4b\u8bd5\u7528\u4f8b\u4e2d\u4f7f\u7528\u90bb\u63a5\u5217\u8868\u8868\u793a\u3002<\/p>\n<p><strong>\u90bb\u63a5\u5217\u8868<\/strong> \u662f\u7528\u4e8e\u8868\u793a\u6709\u9650\u56fe\u7684\u65e0\u5e8f\u5217\u8868\u7684\u96c6\u5408\u3002\u6bcf\u4e2a\u5217\u8868\u90fd\u63cf\u8ff0\u4e86\u56fe\u4e2d\u8282\u70b9\u7684\u90bb\u5c45\u96c6\u3002<\/p>\n<p>\u7ed9\u5b9a\u8282\u70b9\u5c06\u59cb\u7ec8\u662f\u56fe\u4e2d\u7684\u7b2c\u4e00\u4e2a\u8282\u70b9\uff08\u503c\u4e3a 1\uff09\u3002\u4f60\u5fc5\u987b\u5c06 <strong>\u7ed9\u5b9a\u8282\u70b9\u7684\u62f7\u8d1d<\/strong> \u4f5c\u4e3a\u5bf9\u514b\u9686\u56fe\u7684\u5f15\u7528\u8fd4\u56de\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-96\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u4f7f\u7528\u54c8\u5e0c\u8868\u8bb0\u5f55\u5f53\u524d\u8282\u70b9\u662f\u5426\u5df2\u7ecf\u88ab\u521b\u7acb\uff0c\u7136\u540e\u4f7f\u7528\u9012\u5f52\u8282\u70b9\u7684\u90bb\u63a5\u5217\u8868\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-117\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n\nusing namespace std;\n\nclass Node {\npublic:\n    int val;\n    vector&lt;Node*&gt; neighbors;\n    Node() {\n        val = 0;\n        neighbors = vector&lt;Node*&gt;();\n    }\n    Node(int _val) {\n        val = _val;\n        neighbors = vector&lt;Node*&gt;();\n    }\n    Node(int _val, vector&lt;Node*&gt; _neighbors) {\n        val = _val;\n        neighbors = _neighbors;\n    }\n};\n\n\nclass Solution {\npublic:\n\n    unordered_map&lt;int,Node*&gt; node_set;\n\n    Node* cloneGraph(Node* node) {\n        \n        if (node == nullptr)\n        {\n            return node;\n        }\n\n        if (node_set.count(node-&gt;val)) return node_set[node-&gt;val];\n\n        Node* p = new Node(node-&gt;val);\n        node_set[node-&gt;val] = p;\n\n        vector&lt;Node*&gt; neighbor = node-&gt;neighbors;\n\n        for (int i = 0; i &lt; neighbor.size(); i++)\n        {\n            p-&gt;neighbors.emplace_back(cloneGraph(neighbor[i]));\n        }\n\n        return p;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/02\/01\/133_clone_graph_question.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/02\/01\/133_clone_graph_question.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aadjList = [[2,4],[1,3],[2,4],[1,3]]\n\u8f93\u51fa\uff1a[[2,4],[1,3],[2,4],[1,3]]\n\u89e3\u91ca\uff1a\n\u56fe\u4e2d\u6709 4 \u4e2a\u8282\u70b9\u3002\n\u8282\u70b9 1 \u7684\u503c\u662f 1\uff0c\u5b83\u6709\u4e24\u4e2a\u90bb\u5c45\uff1a\u8282\u70b9 2 \u548c 4 \u3002\n\u8282\u70b9 2 \u7684\u503c\u662f 2\uff0c\u5b83\u6709\u4e24\u4e2a\u90bb\u5c45\uff1a\u8282\u70b9 1 \u548c 3 \u3002\n\u8282\u70b9 3 \u7684\u503c\u662f 3\uff0c\u5b83\u6709\u4e24\u4e2a\u90bb\u5c45\uff1a\u8282\u70b9 2 \u548c 4 \u3002\n\u8282\u70b9 4 \u7684\u503c\u662f 4\uff0c\u5b83\u6709\u4e24\u4e2a\u90bb\u5c45\uff1a\u8282\u70b9 1 \u548c 3 \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/02\/01\/graph.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/02\/01\/graph.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aadjList = [[]]\n\u8f93\u51fa\uff1a[[]]\n\u89e3\u91ca\uff1a\u8f93\u5165\u5305\u542b\u4e00\u4e2a\u7a7a\u5217\u8868\u3002\u8be5\u56fe\u4ec5\u4ec5\u53ea\u6709\u4e00\u4e2a\u503c\u4e3a 1 \u7684\u8282\u70b9\uff0c\u5b83\u6ca1\u6709\u4efb\u4f55\u90bb\u5c45\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aadjList = []\n\u8f93\u51fa\uff1a[]\n\u89e3\u91ca\uff1a\u8fd9\u4e2a\u56fe\u662f\u7a7a\u7684\uff0c\u5b83\u4e0d\u542b\u4efb\u4f55\u8282\u70b9\u3002\n<\/code><\/pre>\n<h3 id=\"\u9664\u6cd5\u6c42\u503c\">\u9664\u6cd5\u6c42\u503c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-118\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u53d8\u91cf\u5bf9\u6570\u7ec4 <code>equations<\/code> \u548c\u4e00\u4e2a\u5b9e\u6570\u503c\u6570\u7ec4 <code>values<\/code> \u4f5c\u4e3a\u5df2\u77e5\u6761\u4ef6\uff0c\u5176\u4e2d <code>equations[i] = [Ai, Bi]<\/code> \u548c <code>values[i]<\/code> \u5171\u540c\u8868\u793a\u7b49\u5f0f <code>Ai \/ Bi = values[i]<\/code> \u3002\u6bcf\u4e2a <code>Ai<\/code> \u6216 <code>Bi<\/code> \u662f\u4e00\u4e2a\u8868\u793a\u5355\u4e2a\u53d8\u91cf\u7684\u5b57\u7b26\u4e32\u3002<\/p>\n<p>\u53e6\u6709\u4e00\u4e9b\u4ee5\u6570\u7ec4 <code>queries<\/code> \u8868\u793a\u7684\u95ee\u9898\uff0c\u5176\u4e2d <code>queries[j] = [Cj, Dj]<\/code> \u8868\u793a\u7b2c <code>j<\/code> \u4e2a\u95ee\u9898\uff0c\u8bf7\u4f60\u6839\u636e\u5df2\u77e5\u6761\u4ef6\u627e\u51fa <code>Cj \/ Dj = ?<\/code> \u7684\u7ed3\u679c\u4f5c\u4e3a\u7b54\u6848\u3002<\/p>\n<p>\u8fd4\u56de <strong>\u6240\u6709\u95ee\u9898\u7684\u7b54\u6848<\/strong> \u3002\u5982\u679c\u5b58\u5728\u67d0\u4e2a\u65e0\u6cd5\u786e\u5b9a\u7684\u7b54\u6848\uff0c\u5219\u7528 <code>-1.0<\/code> \u66ff\u4ee3\u8fd9\u4e2a\u7b54\u6848\u3002\u5982\u679c\u95ee\u9898\u4e2d\u51fa\u73b0\u4e86\u7ed9\u5b9a\u7684\u5df2\u77e5\u6761\u4ef6\u4e2d\u6ca1\u6709\u51fa\u73b0\u7684\u5b57\u7b26\u4e32\uff0c\u4e5f\u9700\u8981\u7528 <code>-1.0<\/code> \u66ff\u4ee3\u8fd9\u4e2a\u7b54\u6848\u3002<\/p>\n<p><strong>\u6ce8\u610f\uff1a<\/strong>\u8f93\u5165\u603b\u662f\u6709\u6548\u7684\u3002\u4f60\u53ef\u4ee5\u5047\u8bbe\u9664\u6cd5\u8fd0\u7b97\u4e2d\u4e0d\u4f1a\u51fa\u73b0\u9664\u6570\u4e3a 0 \u7684\u60c5\u51b5\uff0c\u4e14\u4e0d\u5b58\u5728\u4efb\u4f55\u77db\u76fe\u7684\u7ed3\u679c\u3002<\/p>\n<p><strong>\u6ce8\u610f\uff1a<\/strong>\u672a\u5728\u7b49\u5f0f\u5217\u8868\u4e2d\u51fa\u73b0\u7684\u53d8\u91cf\u662f\u672a\u5b9a\u4e49\u7684\uff0c\u56e0\u6b64\u65e0\u6cd5\u786e\u5b9a\u5b83\u4eec\u7684\u7b54\u6848\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-97\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u770b\u4ee3\u7801\u6ce8\u91ca<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-118\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;string&gt;\n#include &lt;unordered_map&gt;\n#include &lt;queue&gt;\n#include &lt;unordered_set&gt;\n\nusing namespace std;\n\n\n\/\/ \u5b9a\u4e49\u4e00\u4e2a\u89e3\u51b3\u65b9\u6848\u7c7b\nclass Solution {\npublic:\n    \/\/ \u4e3b\u51fd\u6570\uff0c\u63a5\u53d7\u65b9\u7a0b\u7ec4\u3001\u503c\u4ee5\u53ca\u67e5\u8be2\uff0c\u8fd4\u56de\u67e5\u8be2\u7684\u7ed3\u679c\n    vector&lt;double&gt; calcEquation(vector&lt;vector&lt;string&gt;&gt;&amp; equations, vector&lt;double&gt;&amp; values, vector&lt;vector&lt;string&gt;&gt;&amp; queries) {\n\n        \/\/ \u521b\u5efa\u4e00\u4e2a\u56fe\uff0c\u7528\u4e8e\u8868\u793a\u65b9\u7a0b\u7ec4\u4e2d\u7684\u5173\u7cfb\n        \/\/ \u56fe\u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\u5230\u5b57\u7b26\u4e32\u5230double\u7684\u6620\u5c04\uff0c\u8868\u793a\u8282\u70b9\u5230\u8282\u70b9\u4e4b\u95f4\u7684\u6743\u91cd\n        unordered_map&lt;string, unordered_map&lt;string, double&gt;&gt; graph;\n\n        \/\/ \u65b9\u7a0b\u7ec4\u7684\u6570\u91cf\n        int n = equations.size();\n\n        \/\/ \u6784\u5efa\u56fe\uff0c\u5c06\u65b9\u7a0b\u7ec4\u4e2d\u7684\u5173\u7cfb\u6dfb\u52a0\u5230\u56fe\u4e2d\n        for (int i = 0; i &lt; n; i++)\n        {\n            string s = equations[i][0]; \/\/ \u65b9\u7a0b\u7684\u8d77\u59cb\u8282\u70b9\n            string e = equations[i][1]; \/\/ \u65b9\u7a0b\u7684\u7ec8\u6b62\u8282\u70b9\n            double v = values[i];       \/\/ \u65b9\u7a0b\u7684\u503c\n\n            graph[s][e] = v;            \/\/ \u6dfb\u52a0s\u5230e\u7684\u8fb9\uff0c\u6743\u91cd\u4e3av\n            graph[e][s] = 1 \/ v;        \/\/ \u6dfb\u52a0e\u5230s\u7684\u8fb9\uff0c\u6743\u91cd\u4e3a1\/v\n            graph[s][s] = 1.0;          \/\/ \u6dfb\u52a0s\u5230s\u7684\u8fb9\uff0c\u6743\u91cd\u4e3a1.0\uff08\u81ea\u8eab\u5faa\u73af\uff09\n            graph[e][e] = 1.0;          \/\/ \u6dfb\u52a0e\u5230e\u7684\u8fb9\uff0c\u6743\u91cd\u4e3a1.0\uff08\u81ea\u8eab\u5faa\u73af\uff09\n        }\n\n        \/\/ \u521b\u5efa\u4e00\u4e2a\u961f\u5217\uff0c\u7528\u4e8e\u5bbd\u5ea6\u4f18\u5148\u641c\u7d22\n        queue&lt;pair&lt;string, double&gt;&gt; q;\n\n        \/\/ \u67e5\u8be2\u7684\u6570\u91cf\n        int m = queries.size();\n\n        \/\/ \u7ed3\u679c\u6570\u7ec4\uff0c\u521d\u59cb\u5316\u4e3a-1.0\uff0c\u7528\u4e8e\u5b58\u50a8\u67e5\u8be2\u7684\u7ed3\u679c\n        vector&lt;double&gt; ans(m, -1.0);\n\n        \/\/ \u904d\u5386\u6240\u6709\u67e5\u8be2\n        for (int i = 0; i &lt; m; i++)\n        {\n            string qx = queries[i][0], qy = queries[i][1]; \/\/ \u5f53\u524d\u67e5\u8be2\u7684\u4e24\u4e2a\u8282\u70b9\n\n            \/\/ \u5982\u679c\u67e5\u8be2\u4e2d\u7684\u8282\u70b9\u4e0d\u5728\u56fe\u4e2d\uff0c\u5219\u8df3\u8fc7\u5f53\u524d\u67e5\u8be2\n            if (graph.find(qx) == graph.end() || graph.find(qy) == graph.end()) continue;\n\n            \/\/ \u5c06\u8d77\u59cb\u8282\u70b9\u548c\u521d\u59cb\u4e58\u79ef1.0\u653e\u5165\u961f\u5217\n            q.emplace(qx, 1.0);\n\n            \/\/ \u521b\u5efa\u4e00\u4e2a\u5df2\u8bbf\u95ee\u96c6\u5408\uff0c\u7528\u4e8e\u8bb0\u5f55\u5df2\u8bbf\u95ee\u7684\u8282\u70b9\n            unordered_set&lt;string&gt; visited{ qx };\n\n            \/\/ \u8fdb\u884c\u5bbd\u5ea6\u4f18\u5148\u641c\u7d22\n            while (!q.empty())\n            {\n                string node = q.front().first;   \/\/ \u5f53\u524d\u8282\u70b9\n                double mul = q.front().second;   \/\/ \u4ece\u8d77\u59cb\u8282\u70b9\u5230\u5f53\u524d\u8282\u70b9\u7684\u4e58\u79ef\n                q.pop();                         \/\/ \u5f39\u51fa\u5f53\u524d\u8282\u70b9\n\n                \/\/ \u904d\u5386\u5f53\u524d\u8282\u70b9\u7684\u6240\u6709\u90bb\u5c45\n                for (pair&lt;string, double&gt; neighbor : graph[node])\n                {\n                    string ngh = neighbor.first;  \/\/ \u90bb\u5c45\u8282\u70b9\n                    double weight = neighbor.second; \/\/ \u5f53\u524d\u8282\u70b9\u5230\u90bb\u5c45\u8282\u70b9\u7684\u6743\u91cd\n\n                    \/\/ \u5982\u679c\u627e\u5230\u4e86\u67e5\u8be2\u7684\u7ec8\u6b62\u8282\u70b9\uff0c\u5219\u8ba1\u7b97\u7ed3\u679c\u5e76\u9000\u51fa\u5faa\u73af\n                    if (ngh == qy) {\n                        ans[i] = mul * weight;\n                        break;\n                    }\n\n                    \/\/ \u5982\u679c\u90bb\u5c45\u8282\u70b9\u6ca1\u6709\u88ab\u8bbf\u95ee\u8fc7\uff0c\u5219\u5c06\u5176\u52a0\u5165\u961f\u5217\n                    if (visited.find(ngh) == visited.end())\n                    {\n                        visited.emplace(ngh);\n                        q.emplace(ngh, mul * weight);\n                    }\n                }\n            }\n        }\n\n        \/\/ \u8fd4\u56de\u7ed3\u679c\u6570\u7ec4\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aequations = [[\"a\",\"b\"],[\"b\",\"c\"]], values = [2.0,3.0], queries = [[\"a\",\"c\"],[\"b\",\"a\"],[\"a\",\"e\"],[\"a\",\"a\"],[\"x\",\"x\"]]\n\u8f93\u51fa\uff1a[6.00000,0.50000,-1.00000,1.00000,-1.00000]\n\u89e3\u91ca\uff1a\n\u6761\u4ef6\uff1aa \/ b = 2.0, b \/ c = 3.0\n\u95ee\u9898\uff1aa \/ c = ?, b \/ a = ?, a \/ e = ?, a \/ a = ?, x \/ x = ?\n\u7ed3\u679c\uff1a[6.0, 0.5, -1.0, 1.0, -1.0 ]\n\u6ce8\u610f\uff1ax \u662f\u672a\u5b9a\u4e49\u7684 =&gt; -1.0\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aequations = [[\"a\",\"b\"],[\"b\",\"c\"],[\"bc\",\"cd\"]], values = [1.5,2.5,5.0], queries = [[\"a\",\"c\"],[\"c\",\"b\"],[\"bc\",\"cd\"],[\"cd\",\"bc\"]]\n\u8f93\u51fa\uff1a[3.75000,0.40000,5.00000,0.20000]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aequations = [[\"a\",\"b\"]], values = [0.5], queries = [[\"a\",\"b\"],[\"b\",\"a\"],[\"a\",\"c\"],[\"x\",\"y\"]]\n\u8f93\u51fa\uff1a[0.50000,2.00000,-1.00000,-1.00000]\n<\/code><\/pre>\n<h3 id=\"\u8bfe\u7a0b\u8868\">\u8bfe\u7a0b\u8868<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-119\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u4f60\u8fd9\u4e2a\u5b66\u671f\u5fc5\u987b\u9009\u4fee <code>numCourses<\/code> \u95e8\u8bfe\u7a0b\uff0c\u8bb0\u4e3a <code>0<\/code> \u5230 <code>numCourses - 1<\/code> \u3002<\/p>\n<p>\u5728\u9009\u4fee\u67d0\u4e9b\u8bfe\u7a0b\u4e4b\u524d\u9700\u8981\u4e00\u4e9b\u5148\u4fee\u8bfe\u7a0b\u3002 \u5148\u4fee\u8bfe\u7a0b\u6309\u6570\u7ec4 <code>prerequisites<\/code> \u7ed9\u51fa\uff0c\u5176\u4e2d <code>prerequisites[i] = [ai, bi]<\/code> \uff0c\u8868\u793a\u5982\u679c\u8981\u5b66\u4e60\u8bfe\u7a0b <code>ai<\/code> \u5219 <strong>\u5fc5\u987b<\/strong> \u5148\u5b66\u4e60\u8bfe\u7a0b <code>bi<\/code> \u3002<\/p>\n<ul>\n<li>\u4f8b\u5982\uff0c\u5148\u4fee\u8bfe\u7a0b\u5bf9 <code>[0, 1]<\/code> \u8868\u793a\uff1a\u60f3\u8981\u5b66\u4e60\u8bfe\u7a0b <code>0<\/code> \uff0c\u4f60\u9700\u8981\u5148\u5b8c\u6210\u8bfe\u7a0b <code>1<\/code> \u3002<\/li>\n<\/ul>\n<p>\u8bf7\u4f60\u5224\u65ad\u662f\u5426\u53ef\u80fd\u5b8c\u6210\u6240\u6709\u8bfe\u7a0b\u7684\u5b66\u4e60\uff1f\u5982\u679c\u53ef\u4ee5\uff0c\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-98\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8fd9\u9053\u9898\u6211\u4eec\u91c7\u7528\u62d3\u6251\u6392\u5e8f\uff0c\u5982\u679c\u6700\u540e\u6ca1\u6709\u73af\uff0c\u5219\u4ee3\u8868\u53ef\u4ee5\u6210\u529f\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-119\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n#include &lt;queue&gt;\n\nusing namespace std;\n\nclass Solution {\nprivate:\n    vector&lt;vector&lt;int&gt;&gt; edges;\n    vector&lt;int&gt; visited;\n    bool valid = true;\n\npublic:\n    void dfs(int u) {\n        visited[u] = 1;\n        for (int v : edges[u]) {\n            if (visited[v] == 0) {\n                dfs(v);\n                if (!valid) {\n                    return;\n                }\n            }\n            else if (visited[v] == 1) {\n                valid = false;\n                return;\n            }\n        }\n        visited[u] = 2;\n    }\n\n    bool canFinish(int numCourses, vector&lt;vector&lt;int&gt;&gt;&amp; prerequisites) {\n        edges.resize(numCourses);\n        visited.resize(numCourses);\n        for (const auto&amp; info : prerequisites) {\n            edges[info[1]].push_back(info[0]);\n        }\n        for (int i = 0; i &lt; numCourses &amp;&amp; valid; ++i) {\n            if (!visited[i]) {\n                dfs(i);\n            }\n        }\n        return valid;\n    }\n};\n\n\/\/BFS\nclass Solution {\npublic:\n    bool canFinish(int numCourses, vector&lt;vector&lt;int&gt;&gt;&amp; prerequisites) {\n        \/\/\u6240\u6709\u8bfe\u7a0b\u7684\u5165\u5ea6\n        vector&lt;int&gt; ingree(numCourses, 0);\n        \/\/\u4fdd\u5b58\u8bfe\u7a0b\u548c\u5148\u4fee\u8bfe\u7a0b\u4e4b\u95f4\u7684\u5173\u7cfb\n        unordered_map&lt;int, vector&lt;int&gt;&gt; preCourse;\n        for (int i = 0; i &lt; prerequisites.size(); ++i) {\n            preCourse[prerequisites[i][0]].push_back(prerequisites[i][1]);\n            ingree[prerequisites[i][1]]++;\n        }\n\n        queue&lt;int&gt; zero_ingree;\n        int count = 0;\n        for (int i = 0; i &lt; numCourses; ++i) {\n            \/\/\u6240\u6709\u5165\u5ea6\u4e3a0\u7684\u8bfe\u7a0b\u5165\u961f\u5217\n            if (!ingree[i]) {\n                zero_ingree.push(i);\n                ++count;\n            }\n        }\n\n        while (!zero_ingree.empty()) {\n            int cur_course = zero_ingree.front();\n            zero_ingree.pop();\n            for (int i = 0; i &lt; preCourse[cur_course].size(); ++i) {\n                \/\/\u5f53\u524d\u5165\u5ea6\u4e3a0\u7684\u8bfe\u7a0b\u5bf9\u5e94\u7684\u5148\u4fee\u8bfe\u7a0b\u5165\u5ea6\u51cf1\n                --ingree[preCourse[cur_course][i]];\n                if (!ingree[preCourse[cur_course][i]]) {\n                    \/\/\u5165\u5ea6\u4e3a0\u7684\u8bfe\u7a0b\u5165\u961f\u5217\n                    zero_ingree.push(preCourse[cur_course][i]);\n                    ++count;\n                }\n            }\n        }\n        \/\/\u6240\u6709\u8bfe\u7a0b\u7684\u5165\u5ea6\u51cf\u4e3a0\uff0c\u8bf4\u660e\u8bfe\u7a0b\u53ef\u4ee5\u4fee\u5b8c\n        if (count == numCourses) return true;\n        return false;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anumCourses = 2, prerequisites = [[1,0]]\n\u8f93\u51fa\uff1atrue\n\u89e3\u91ca\uff1a\u603b\u5171\u6709 2 \u95e8\u8bfe\u7a0b\u3002\u5b66\u4e60\u8bfe\u7a0b 1 \u4e4b\u524d\uff0c\u4f60\u9700\u8981\u5b8c\u6210\u8bfe\u7a0b 0 \u3002\u8fd9\u662f\u53ef\u80fd\u7684\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anumCourses = 2, prerequisites = [[1,0],[0,1]]\n\u8f93\u51fa\uff1afalse\n\u89e3\u91ca\uff1a\u603b\u5171\u6709 2 \u95e8\u8bfe\u7a0b\u3002\u5b66\u4e60\u8bfe\u7a0b 1 \u4e4b\u524d\uff0c\u4f60\u9700\u8981\u5148\u5b8c\u6210\u8bfe\u7a0b 0 \uff1b\u5e76\u4e14\u5b66\u4e60\u8bfe\u7a0b 0 \u4e4b\u524d\uff0c\u4f60\u8fd8\u5e94\u5148\u5b8c\u6210\u8bfe\u7a0b 1 \u3002\u8fd9\u662f\u4e0d\u53ef\u80fd\u7684\u3002\n<\/code><\/pre>\n<h3 id=\"\u8bfe\u7a0b\u8868\u2171\">\u8bfe\u7a0b\u8868\u2161<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-120\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u73b0\u5728\u4f60\u603b\u5171\u6709 <code>numCourses<\/code> \u95e8\u8bfe\u9700\u8981\u9009\uff0c\u8bb0\u4e3a <code>0<\/code> \u5230 <code>numCourses - 1<\/code>\u3002\u7ed9\u4f60\u4e00\u4e2a\u6570\u7ec4 <code>prerequisites<\/code> \uff0c\u5176\u4e2d <code>prerequisites[i] = [ai, bi]<\/code> \uff0c\u8868\u793a\u5728\u9009\u4fee\u8bfe\u7a0b <code>ai<\/code> \u524d <strong>\u5fc5\u987b<\/strong> \u5148\u9009\u4fee <code>bi<\/code> \u3002<\/p>\n<ul>\n<li>\u4f8b\u5982\uff0c\u60f3\u8981\u5b66\u4e60\u8bfe\u7a0b <code>0<\/code> \uff0c\u4f60\u9700\u8981\u5148\u5b8c\u6210\u8bfe\u7a0b <code>1<\/code> \uff0c\u6211\u4eec\u7528\u4e00\u4e2a\u5339\u914d\u6765\u8868\u793a\uff1a<code>[0,1]<\/code> \u3002<\/li>\n<\/ul>\n<p>\u8fd4\u56de\u4f60\u4e3a\u4e86\u5b66\u5b8c\u6240\u6709\u8bfe\u7a0b\u6240\u5b89\u6392\u7684\u5b66\u4e60\u987a\u5e8f\u3002\u53ef\u80fd\u4f1a\u6709\u591a\u4e2a\u6b63\u786e\u7684\u987a\u5e8f\uff0c\u4f60\u53ea\u8981\u8fd4\u56de <strong>\u4efb\u610f\u4e00\u79cd<\/strong> \u5c31\u53ef\u4ee5\u4e86\u3002\u5982\u679c\u4e0d\u53ef\u80fd\u5b8c\u6210\u6240\u6709\u8bfe\u7a0b\uff0c\u8fd4\u56de <strong>\u4e00\u4e2a\u7a7a\u6570\u7ec4<\/strong> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-99\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u548c<strong>\u8bfe\u7a0b\u8868<\/strong>\u7684\u533a\u522b\u5c31\u5728\u4e8e\uff0c\u8fd9\u4e2a\u5c06\u62d3\u6251\u6392\u5e8f\u7684\u7ed3\u679c\u8bb0\u5f55\u4e0b\u6765\uff0c\u8fd9\u6837\u5230\u65f6\u5019\u8f93\u51fa\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-120\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;queue&gt;\n#include &lt;unordered_map&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;int&gt; findOrder(int numCourses, vector&lt;vector&lt;int&gt;&gt;&amp; prerequisites) {\n        \/\/ \u5b58\u50a8\u6bcf\u4e2a\u8282\u70b9\u7684\u5165\u5ea6\n        vector&lt;int&gt; inDegree(numCourses, 0);\n        \/\/ \u5b58\u50a8\u6709\u5411\u56fe\n        unordered_map&lt;int, vector&lt;int&gt;&gt; graph;\n        \/\/ \u5b58\u50a8\u62d3\u6251\u6392\u5e8f\u7684\u7ed3\u679c\n        vector&lt;int&gt; result;\n        \/\/ \u6784\u5efa\u56fe\u548c\u5165\u5ea6\u6570\u7ec4\n        for (auto&amp; edge : prerequisites) {\n            graph[edge[1]].push_back(edge[0]);\n            inDegree[edge[0]]++;\n        }\n\n        \/\/ \u627e\u5230\u6240\u6709\u5165\u5ea6\u4e3a0\u7684\u8282\u70b9\uff0c\u5e76\u5c06\u5b83\u4eec\u52a0\u5165\u961f\u5217\n        queue&lt;int&gt; q;\n        for (int i = 0; i &lt; numCourses; ++i) {\n            if (inDegree[i] == 0) {\n                q.push(i);\n            }\n        }\n\n        \/\/ \u8fdb\u884c\u62d3\u6251\u6392\u5e8f\n        while (!q.empty()) {\n            int course = q.front();\n            q.pop();\n            result.push_back(course);\n            for (int nextCourse : graph[course]) {\n                \/\/\u8fd9\u91cc\u7684nextCourse\u662fvector&lt;int&gt;\u4e2d\u7684\u6240\u6709\u503c\n                inDegree[nextCourse]--;\n                if (inDegree[nextCourse] == 0) {\n                    q.push(nextCourse);\n                }\n            }\n        }\n\n        \/\/ \u5982\u679c\u7ed3\u679c\u957f\u5ea6\u4e0d\u7b49\u4e8e\u8bfe\u7a0b\u6570\uff0c\u8bf4\u660e\u5b58\u5728\u73af\uff0c\u65e0\u6cd5\u5b8c\u6210\u6240\u6709\u8bfe\u7a0b\n        if (result.size() != numCourses) {\n            return {};\n        }\n\n        return result;\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anumCourses = 2, prerequisites = [[1,0]]\n\u8f93\u51fa\uff1a[0,1]\n\u89e3\u91ca\uff1a\u603b\u5171\u6709 2 \u95e8\u8bfe\u7a0b\u3002\u8981\u5b66\u4e60\u8bfe\u7a0b 1\uff0c\u4f60\u9700\u8981\u5148\u5b8c\u6210\u8bfe\u7a0b 0\u3002\u56e0\u6b64\uff0c\u6b63\u786e\u7684\u8bfe\u7a0b\u987a\u5e8f\u4e3a [0,1] \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anumCourses = 4, prerequisites = [[1,0],[2,0],[3,1],[3,2]]\n\u8f93\u51fa\uff1a[0,2,1,3]\n\u89e3\u91ca\uff1a\u603b\u5171\u6709 4 \u95e8\u8bfe\u7a0b\u3002\u8981\u5b66\u4e60\u8bfe\u7a0b 3\uff0c\u4f60\u5e94\u8be5\u5148\u5b8c\u6210\u8bfe\u7a0b 1 \u548c\u8bfe\u7a0b 2\u3002\u5e76\u4e14\u8bfe\u7a0b 1 \u548c\u8bfe\u7a0b 2 \u90fd\u5e94\u8be5\u6392\u5728\u8bfe\u7a0b 0 \u4e4b\u540e\u3002\n\u56e0\u6b64\uff0c\u4e00\u4e2a\u6b63\u786e\u7684\u8bfe\u7a0b\u987a\u5e8f\u662f [0,1,2,3] \u3002\u53e6\u4e00\u4e2a\u6b63\u786e\u7684\u6392\u5e8f\u662f [0,2,1,3] \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anumCourses = 1, prerequisites = []\n\u8f93\u51fa\uff1a[0]\n<\/code><\/pre>\n<h3 id=\"\u86c7\u68af\u68cb\">\u86c7\u68af\u68cb<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-121\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5927\u5c0f\u4e3a <code>n x n<\/code> \u7684\u6574\u6570\u77e9\u9635 <code>board<\/code> \uff0c\u65b9\u683c\u6309\u4ece <code>1<\/code> \u5230 <code>n2<\/code> \u7f16\u53f7\uff0c\u7f16\u53f7\u9075\u5faa <a href=\"https:\/\/baike.baidu.com\/item\/\u725b\u8015\u5f0f\u8f6c\u884c\u4e66\u5199\u6cd5\/17195786\">\u8f6c\u884c\u4ea4\u66ff\u65b9\u5f0f<\/a> \uff0c<strong>\u4ece\u5de6\u4e0b\u89d2\u5f00\u59cb<\/strong> \uff08\u5373\uff0c\u4ece <code>board[n - 1][0]<\/code> \u5f00\u59cb\uff09\u6bcf\u4e00\u884c\u4ea4\u66ff\u65b9\u5411\u3002<\/p>\n<p>\u73a9\u5bb6\u4ece\u68cb\u76d8\u4e0a\u7684\u65b9\u683c <code>1<\/code> \uff08\u603b\u662f\u5728\u6700\u540e\u4e00\u884c\u3001\u7b2c\u4e00\u5217\uff09\u5f00\u59cb\u51fa\u53d1\u3002<\/p>\n<p>\u6bcf\u4e00\u56de\u5408\uff0c\u73a9\u5bb6\u9700\u8981\u4ece\u5f53\u524d\u65b9\u683c <code>curr<\/code> \u5f00\u59cb\u51fa\u53d1\uff0c\u6309\u4e0b\u8ff0\u8981\u6c42\u524d\u8fdb\uff1a<\/p>\n<ul>\n<li>\u9009\u5b9a\u76ee\u6807\u65b9\u683c <code>next<\/code> \uff0c\u76ee\u6807\u65b9\u683c\u7684\u7f16\u53f7\u7b26\u5408\u8303\u56f4 <code>[curr + 1, min(curr + 6, n2)]<\/code> \u3002<\/li>\n<li>\u4f20\u9001\u73a9\u5bb6\uff1a\u5982\u679c\u76ee\u6807\u65b9\u683c <code>next<\/code> \u5904\u5b58\u5728\u86c7\u6216\u68af\u5b50\uff0c\u90a3\u4e48\u73a9\u5bb6\u4f1a\u4f20\u9001\u5230\u86c7\u6216\u68af\u5b50\u7684\u76ee\u7684\u5730\u3002\u5426\u5219\uff0c\u73a9\u5bb6\u4f20\u9001\u5230\u76ee\u6807\u65b9\u683c <code>next<\/code> \u3002<\/li>\n<li>\u5f53\u73a9\u5bb6\u5230\u8fbe\u7f16\u53f7 <code>n2<\/code> \u7684\u65b9\u683c\u65f6\uff0c\u6e38\u620f\u7ed3\u675f\u3002<\/li>\n<\/ul>\n<p><code>r<\/code> \u884c <code>c<\/code> \u5217\u7684\u68cb\u76d8\uff0c\u6309\u524d\u8ff0\u65b9\u6cd5\u7f16\u53f7\uff0c\u68cb\u76d8\u683c\u4e2d\u53ef\u80fd\u5b58\u5728 \u201c\u86c7\u201d \u6216 \u201c\u68af\u5b50\u201d\uff1b\u5982\u679c <code>board[r][c] != -1<\/code>\uff0c\u90a3\u4e2a\u86c7\u6216\u68af\u5b50\u7684\u76ee\u7684\u5730\u5c06\u4f1a\u662f <code>board[r][c]<\/code>\u3002\u7f16\u53f7\u4e3a <code>1<\/code> \u548c <code>n2<\/code> \u7684\u65b9\u683c\u4e0a\u6ca1\u6709\u86c7\u6216\u68af\u5b50\u3002<\/p>\n<p>\u6ce8\u610f\uff0c\u73a9\u5bb6\u5728\u6bcf\u56de\u5408\u7684\u524d\u8fdb\u8fc7\u7a0b\u4e2d\u6700\u591a\u53ea\u80fd\u722c\u8fc7\u86c7\u6216\u68af\u5b50\u4e00\u6b21\uff1a\u5c31\u7b97\u76ee\u7684\u5730\u662f\u53e6\u4e00\u6761\u86c7\u6216\u68af\u5b50\u7684\u8d77\u70b9\uff0c\u73a9\u5bb6\u4e5f <strong>\u4e0d\u80fd<\/strong> \u7ee7\u7eed\u79fb\u52a8\u3002<\/p>\n<ul>\n<li>\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u5047\u8bbe\u68cb\u76d8\u662f <code>[[-1,4],[-1,3]]<\/code> \uff0c\u7b2c\u4e00\u6b21\u79fb\u52a8\uff0c\u73a9\u5bb6\u7684\u76ee\u6807\u65b9\u683c\u662f <code>2<\/code> \u3002\u90a3\u4e48\u8fd9\u4e2a\u73a9\u5bb6\u5c06\u4f1a\u987a\u7740\u68af\u5b50\u5230\u8fbe\u65b9\u683c <code>3<\/code> \uff0c\u4f46 <strong>\u4e0d\u80fd<\/strong> \u987a\u7740\u65b9\u683c <code>3<\/code> \u4e0a\u7684\u68af\u5b50\u524d\u5f80\u65b9\u683c <code>4<\/code> \u3002<\/li>\n<\/ul>\n<p>\u8fd4\u56de\u8fbe\u5230\u7f16\u53f7\u4e3a <code>n2<\/code> \u7684\u65b9\u683c\u6240\u9700\u7684\u6700\u5c11\u79fb\u52a8\u6b21\u6570\uff0c\u5982\u679c\u4e0d\u53ef\u80fd\uff0c\u5219\u8fd4\u56de <code>-1<\/code>\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-100\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><a href=\"https:\/\/leetcode.cn\/problems\/snakes-and-ladders\/solutions\/2541552\/javapython3cyan-du-you-xian-sou-suo-shu-27v0f\/?envType=study-plan-v2&amp;envId=top-interview-150\">909. \u86c7\u68af\u68cb &#8211; \u529b\u6263\uff08LeetCode\uff09<\/a>\u9898\u89e3\u770b\u8fd9\u4e00\u7bc7<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-121\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;queue&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int snakesAndLadders(vector&lt;vector&lt;int&gt;&gt;&amp; board) {\n        int n = board.size();   \/\/ \u83b7\u53d6\u65b9\u9635\u7684\u8fb9\u957f\n        int target = n * n;     \/\/ \u83b7\u53d6\u65b9\u9635\u5c3a\u5bf8\uff0c\u4e5f\u662f\u6700\u540e\u8981\u5230\u8fbe\u76ee\u7684\u5730\n        queue&lt;pair&lt;int, int&gt;&gt; Q;   \/\/ \u961f\u5217\u7528\u4e8eBFS\uff0c\u5b58\u653e\u5f85\u641c\u7d22\u7684\u65b9\u683c\u7f16\u53f7\u548c\u5230\u8fbe\u8be5\u65b9\u683c\u65f6\u7684\u6700\u5c11\u79fb\u52a8\u6570\n        Q.emplace(1, 0);   \/\/ \u521d\u59cb{1,0}\u5165\u961f\uff0c\u8868\u793a\u8d77\u70b91\uff0c0\u6b21\u79fb\u52a8\n        vector&lt;vector&lt;bool&gt;&gt; visited(n, vector&lt;bool&gt;(n));   \/\/ \u7528\u4e8eBFS\u8fc7\u7a0b\u4e2d\u6807\u8bb0\u65b9\u683c\u662f\u5426\u641c\u7d22\u8fc7\n        \/\/ BFS\n        while (!Q.empty()) {\n            auto node = Q.front();\n            Q.pop();\n            int curr = node.first, cnt = node.second;   \/\/ \u83b7\u53d6\u5f53\u524d\u641c\u7d22\u7684\u65b9\u683c\u5bbe\u6d69\u548c\u5230\u8fbe\u8be5\u65b9\u683c\u7684\u6700\u5c11\u79fb\u52a8\u6570\n            cnt++;  \/\/ \u79fb\u52a8\u6570\u52a01\n            for (int i = curr + 1; i &lt;= min(target, curr + 6); i++) {\n                \/\/ \u679a\u4e3e\u6240\u6709\u4e0b\u4e00\u4e2a\u53ef\u641c\u7d22\u4e14\u672a\u641c\u7d22\u8fc7\u7684\u65b9\u683c\u7f16\u53f7\n                int r = n - 1 - (i - 1) \/ n, c = (i - 1) % n;     \/\/ \u6839\u636e\u65b9\u683c\u7f16\u53f7\u83b7\u53d6\u8fd9\u4e2a\u7f16\u53f7\u7684\u884c\u548c\u5217\n                c += (n - 1 - 2 * c) * ((n - 1 - r) &amp; 1);       \/\/ \u6839\u636e\u884c\u6570\u4fee\u6b63\u5217\u6570\n                if (visited[r][c])continue;  \/\/ \u8df3\u8fc7\u641c\u7d22\u8fc7\u7684\u7f16\u53f7\n                visited[r][c] = true;       \/\/ \u6807\u8bb0\u8be5\u7f16\u53f7\u5df2\u641c\u7d22\n                int next = board[r][c] == -1 ? i : board[r][c];    \/\/ \u5982\u679c\u8fd9\u4e2a\u7f16\u53f7\u6240\u5728\u7684\u65b9\u683c\u53ef\u4ee5\u8f6c\u79fb\u5230\u5176\u4ed6\u683c\u5b50\uff0c\u8f6c\u79fb\u5230\u5bf9\u5e94\u7f16\u53f7\uff1b\u5426\u5219\u5c31\u662f\u5728\u5f53\u524d\u7f16\u53f7\n                if (next == target)return cnt;   \/\/ \u5230\u8fbe\u7ec8\u70b9\uff0c\u76f4\u63a5\u8fd4\u56de\u6700\u5c0f\u79fb\u52a8\u6570    \n                Q.emplace(next, cnt);  \/\/ \u52a0\u5165\u961f\u5217\n            }\n        }\n        return -1;  \/\/ \u9000\u51fa\u5faa\u73af\u8bf4\u660e\u6ca1\u6709\u5230\u8fbe\u76ee\u7684\u5730\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2018\/09\/23\/snakes.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2018\/09\/23\/snakes.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aboard = [[-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1],[-1,35,-1,-1,13,-1],[-1,-1,-1,-1,-1,-1],[-1,15,-1,-1,-1,-1]]\n\u8f93\u51fa\uff1a4\n\u89e3\u91ca\uff1a\n\u9996\u5148\uff0c\u4ece\u65b9\u683c 1 [\u7b2c 5 \u884c\uff0c\u7b2c 0 \u5217] \u5f00\u59cb\u3002 \n\u5148\u51b3\u5b9a\u79fb\u52a8\u5230\u65b9\u683c 2 \uff0c\u5e76\u5fc5\u987b\u722c\u8fc7\u68af\u5b50\u79fb\u52a8\u5230\u5230\u65b9\u683c 15 \u3002\n\u7136\u540e\u51b3\u5b9a\u79fb\u52a8\u5230\u65b9\u683c 17 [\u7b2c 3 \u884c\uff0c\u7b2c 4 \u5217]\uff0c\u5fc5\u987b\u722c\u8fc7\u86c7\u5230\u65b9\u683c 13 \u3002\n\u63a5\u7740\u51b3\u5b9a\u79fb\u52a8\u5230\u65b9\u683c 14 \uff0c\u4e14\u5fc5\u987b\u901a\u8fc7\u68af\u5b50\u79fb\u52a8\u5230\u65b9\u683c 35 \u3002 \n\u6700\u540e\u51b3\u5b9a\u79fb\u52a8\u5230\u65b9\u683c 36 , \u6e38\u620f\u7ed3\u675f\u3002 \n\u53ef\u4ee5\u8bc1\u660e\u9700\u8981\u81f3\u5c11 4 \u6b21\u79fb\u52a8\u624d\u80fd\u5230\u8fbe\u6700\u540e\u4e00\u4e2a\u65b9\u683c\uff0c\u6240\u4ee5\u7b54\u6848\u662f 4 \u3002 \n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aboard = [[-1,-1],[-1,3]]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<h3 id=\"\u6700\u5c0f\u57fa\u56e0\u53d8\u5316\">\u6700\u5c0f\u57fa\u56e0\u53d8\u5316<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-122\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u57fa\u56e0\u5e8f\u5217\u53ef\u4ee5\u8868\u793a\u4e3a\u4e00\u6761\u7531 8 \u4e2a\u5b57\u7b26\u7ec4\u6210\u7684\u5b57\u7b26\u4e32\uff0c\u5176\u4e2d\u6bcf\u4e2a\u5b57\u7b26\u90fd\u662f <code>'A'<\/code>\u3001<code>'C'<\/code>\u3001<code>'G'<\/code> \u548c <code>'T'<\/code> \u4e4b\u4e00\u3002<\/p>\n<p>\u5047\u8bbe\u6211\u4eec\u9700\u8981\u8c03\u67e5\u4ece\u57fa\u56e0\u5e8f\u5217 <code>start<\/code> \u53d8\u4e3a <code>end<\/code> \u6240\u53d1\u751f\u7684\u57fa\u56e0\u53d8\u5316\u3002\u4e00\u6b21\u57fa\u56e0\u53d8\u5316\u5c31\u610f\u5473\u7740\u8fd9\u4e2a\u57fa\u56e0\u5e8f\u5217\u4e2d\u7684\u4e00\u4e2a\u5b57\u7b26\u53d1\u751f\u4e86\u53d8\u5316\u3002<\/p>\n<ul>\n<li>\u4f8b\u5982\uff0c<code>\"AACCGGTT\" --&gt; \"AACCGGTA\"<\/code> \u5c31\u662f\u4e00\u6b21\u57fa\u56e0\u53d8\u5316\u3002<\/li>\n<\/ul>\n<p>\u53e6\u6709\u4e00\u4e2a\u57fa\u56e0\u5e93 <code>bank<\/code> \u8bb0\u5f55\u4e86\u6240\u6709\u6709\u6548\u7684\u57fa\u56e0\u53d8\u5316\uff0c\u53ea\u6709\u57fa\u56e0\u5e93\u4e2d\u7684\u57fa\u56e0\u624d\u662f\u6709\u6548\u7684\u57fa\u56e0\u5e8f\u5217\u3002\uff08\u53d8\u5316\u540e\u7684\u57fa\u56e0\u5fc5\u987b\u4f4d\u4e8e\u57fa\u56e0\u5e93 <code>bank<\/code> \u4e2d\uff09<\/p>\n<p>\u7ed9\u4f60\u4e24\u4e2a\u57fa\u56e0\u5e8f\u5217 <code>start<\/code> \u548c <code>end<\/code> \uff0c\u4ee5\u53ca\u4e00\u4e2a\u57fa\u56e0\u5e93 <code>bank<\/code> \uff0c\u8bf7\u4f60\u627e\u51fa\u5e76\u8fd4\u56de\u80fd\u591f\u4f7f <code>start<\/code> \u53d8\u5316\u4e3a <code>end<\/code> \u6240\u9700\u7684\u6700\u5c11\u53d8\u5316\u6b21\u6570\u3002\u5982\u679c\u65e0\u6cd5\u5b8c\u6210\u6b64\u57fa\u56e0\u53d8\u5316\uff0c\u8fd4\u56de <code>-1<\/code> \u3002<\/p>\n<p>\u6ce8\u610f\uff1a\u8d77\u59cb\u57fa\u56e0\u5e8f\u5217 <code>start<\/code> \u9ed8\u8ba4\u662f\u6709\u6548\u7684\uff0c\u4f46\u662f\u5b83\u5e76\u4e0d\u4e00\u5b9a\u4f1a\u51fa\u73b0\u5728\u57fa\u56e0\u5e93\u4e2d\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-101\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8fd9\u9053\u9898\u662fBFS\u7684\u6a21\u677f\u9898\uff0c\u7528\u4e8e\u67e5\u627e\u6700\u77ed\u8def\u5f84\u95ee\u9898\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-122\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;string&gt;\n#include &lt;queue&gt;\n#include &lt;unordered_set&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int minMutation(string startGene, string endGene, vector&lt;string&gt;&amp; bank) {\n\n        unordered_set&lt;string&gt; string_set(bank.begin(), bank.end());\n\n        queue&lt;string&gt; Q;\n        Q.push(startGene);\n\n        unordered_set&lt;string&gt; visited;\n        visited.emplace(startGene);\n\n        int step = 0;\n\n        while (!Q.empty())\n        {\n            int size = Q.size();\n            while (size &gt; 0)\n            {\n                string cur = Q.front();\n                Q.pop();\n\n                if (cur == endGene)\n                {\n                    return step;\n                }\n                for (char gene : \"ACGT\")\n                {\n                    for (int j = 0; j &lt; cur.size(); j++)\n                    {\n                        string next = cur;\n                        next[j] = gene;\n\n                        if (string_set.count(next) &amp;&amp; !visited.count(next))\n                        {\n                            Q.push(next);\n                            visited.emplace(next);\n                        }\n                    }\n                }\n\n                size--;\n            }\n            step++;\n        }\n\n        return -1;\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1astart = \"AACCGGTT\", end = \"AACCGGTA\", bank = [\"AACCGGTA\"]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1astart = \"AACCGGTT\", end = \"AAACGGTA\", bank = [\"AACCGGTA\",\"AACCGCTA\",\"AAACGGTA\"]\n\u8f93\u51fa\uff1a2\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1astart = \"AAAAACCC\", end = \"AACCCCCC\", bank = [\"AAAACCCC\",\"AAACCCCC\",\"AACCCCCC\"]\n\u8f93\u51fa\uff1a3\n<\/code><\/pre>\n<h2 id=\"\u5b57\u5178\u6811\">\u5b57\u5178\u6811<\/h2>\n<h3 id=\"\u5355\u8bcd\u641c\u7d22\u2171\">\u5355\u8bcd\u641c\u7d22\u2161<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-123\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a <code>m x n<\/code> \u4e8c\u7ef4\u5b57\u7b26\u7f51\u683c <code>board<\/code> \u548c\u4e00\u4e2a\u5355\u8bcd\uff08\u5b57\u7b26\u4e32\uff09\u5217\u8868 <code>words<\/code>\uff0c <em>\u8fd4\u56de\u6240\u6709\u4e8c\u7ef4\u7f51\u683c\u4e0a\u7684\u5355\u8bcd<\/em> \u3002<\/p>\n<p>\u5355\u8bcd\u5fc5\u987b\u6309\u7167\u5b57\u6bcd\u987a\u5e8f\uff0c\u901a\u8fc7 <strong>\u76f8\u90bb\u7684\u5355\u5143\u683c<\/strong> \u5185\u7684\u5b57\u6bcd\u6784\u6210\uff0c\u5176\u4e2d\u201c\u76f8\u90bb\u201d\u5355\u5143\u683c\u662f\u90a3\u4e9b\u6c34\u5e73\u76f8\u90bb\u6216\u5782\u76f4\u76f8\u90bb\u7684\u5355\u5143\u683c\u3002\u540c\u4e00\u4e2a\u5355\u5143\u683c\u5185\u7684\u5b57\u6bcd\u5728\u4e00\u4e2a\u5355\u8bcd\u4e2d\u4e0d\u5141\u8bb8\u88ab\u91cd\u590d\u4f7f\u7528\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-102\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u7ecf\u5178\u7684\u5b57\u5178\u6811<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-123\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;string&gt;\n#include &lt;unordered_map&gt;\n#include &lt;iostream&gt;\n\nusing namespace std;\n\n\/**\n * \u5b57\u5178\u6811\u8282\u70b9\n *\/\nstruct TrieNode {\n    unordered_map&lt;char, TrieNode*&gt; children;    \/\/ \u5b50\u8282\u70b9\u5217\u8868\uff0c\u5b58\u50a8\u5b57\u7b26\u548c\u5bf9\u5e94\u7684\u8282\u70b9\n    string str;                 \/\/ \u5982\u679c\u662f\u5c3e\u8282\u70b9\uff0c\u5b58\u50a8\u5bf9\u5e94\u7684\u5355\u8bcd\n    TrieNode() : str(\"\") {};\n};\n\nclass Solution {\nprivate:\n    TrieNode* root;     \/\/ \u6839\u8282\u70b9\n    \n    \/**\n     * \u5c06\u5355\u8bcdword\u63d2\u5165\u5b57\u6bb5\u6570root\n     *\/\n    void insert(string word) {\n        TrieNode* node = root;      \/\/ \u4ece\u6839\u8282\u70b9\u5f00\u59cb\u6784\u9020\u8fd9\u4e2aword\u5bf9\u5e94\u7684\u8def\u5f84\u8282\u70b9\n        for (auto&amp; char_ : word) {\n            if (node-&gt;children.find(char_) == node-&gt;children.end()) {\n                \/\/ \u5b57\u7b26char_\u5bf9\u5e94\u7684\u8282\u70b9\u4e0d\u5b58\u5728\uff0c\u65b0\u5efa\u4e00\u4e2a\n                node-&gt;children.emplace(char_, new TrieNode());\n            }\n            \/\/ \u66f4\u65b0node\n            node = node-&gt;children[char_];\n        }\n        node-&gt;str = word;   \/\/ \u5c3e\u8282\u70b9\u8bb0\u5f55\u5355\u8bcd\uff0c\u7528\u4e8e\u540e\u5e8f\u67e5\u627e\u7684\u65f6\u5019\u5feb\u901f\u5f97\u5230\n    }\n\n    \/**\n     * \u6df1\u5ea6\u4f18\u5148\u641c\u7d22\u7684\u540c\u65f6\uff0c\u5224\u65ad\u5f53\u524d\u8def\u5f84\u6784\u6210\u7684\u5b57\u7b26\u4e32\u662f\u5426\u4e3a\u67e5\u627e\u5355\u8bcd\n     * @param board: \u4e8c\u7ef4\u7f51\u683c\n     * @param r: \u884c\u53f7\n     * @param c: \u5217\u53f7\n     * @param node\uff1a\u5f53\u524d\u5b57\u7b26\u5bf9\u5e94\u7684\u8def\u5f84\u8282\u70b9\n     * @param len: \u5f53\u524d\u8def\u5f84\u6784\u6210\u7684\u5b57\u7b26\u4e32\u957f\u5ea6\n     * @param res\uff1a\u7ed3\u679c\u96c6\n     *\/\n    void dfs_Search(vector&lt;vector&lt;char&gt;&gt;&amp; board, int r, int c, TrieNode* node, int len, vector&lt;string&gt;&amp; res) {\n        if (len &gt; 10)return;     \/\/ \u5b57\u7b26\u4e32\u957f\u5ea6\u8d85\u8fc710\uff0c\u8fd4\u56de\n        char ch = board[r][c];  \/\/ \u83b7\u53d6\u5f53\u524d\u884c\u5217\u5bf9\u5e94\u7684\u5b57\u7b26\n        if (node-&gt;children.find(ch) == node-&gt;children.end())return;  \/\/ \u5f53\u524d\u5b57\u7b26\u5bf9\u5e94\u7684\u8282\u70b9\u4e0d\u5b58\u5728\uff0c\u5373\u6784\u9020\u7684\u5b57\u7b26\u4e32\u4e0d\u5728words\u4e2d\n        TrieNode* last = node;  \/\/ \u8bb0\u5f55\u5f53\u524dnode\n        node = node-&gt;children[ch];  \/\/ \u66f4\u65b0\u5f53\u524dnode\u4e3a\u5f53\u524d\u5b57\u7b26\u5bf9\u5e94\u5f97\u5230\u7684\u8282\u70b9\n        if (node-&gt;str.size() &gt; 0) {\n            res.emplace_back(node-&gt;str);    \/\/ \u5f53\u524d\u8282\u70b9\u8bb0\u5f55\u4e86\u4e00\u4e2a\u5355\u8bcd\uff0c\u5219\u5f97\u5230\u4e86\u4e00\u4e2awords\u4e2d\u7684\u5355\u8bcd\n            node-&gt;str = \"\";     \/\/ \u5339\u914d\u4e86\u5355\u8bcd\uff0c\u4e0d\u91cd\u590d\u5339\u914d\n        };\n        if (node-&gt;children.empty()) {\n            \/\/ \u5f53\u524d\u8282\u70b9\u6ca1\u6709\u540e\u5e8f\u5b57\u7b26\u4e86\uff0c\u90a3\u4e48\u8fd9\u4e2a\u8282\u70b9\u4e00\u5b9a\u662f\u67d0\u4e2a\u5355\u8bcd\u6700\u540e\u4e00\u4e2a\u5b57\u7b26\u5bf9\u5e94\u7684\u8282\u70b9\u3002\n            \/\/ \u5e76\u4e14\u4e0d\u662f\u5176\u4ed6\u4efb\u4f55\u5355\u8bcd\u7684\u524d\u7f00\uff0c\u56e0\u6b64\u5339\u914d\u5b8c\u4e86\u4e4b\u540e\uff0c\u53ef\u4ee5\u5c06\u8fd9\u4e2a\u5b57\u7b26\u4ece\u5176\u7236\u8282\u70b9\u7684childran\u5217\u8868\u4e2d\u5220\u9664\u3002\n            last-&gt;children.erase(ch);\n            return;\n        }\n        len++;  \/\/ \u66f4\u65b0\u957f\u5ea6\n        board[r][c] = '*';  \/\/ \u7528\u7279\u6b8a\u7b26\u53f7\u6807\u8bb0\u5f53\u524d\u4f4d\u7f6e\u5df2\u4f7f\u7528\n        \/\/ \u56db\u4e2a\u65b9\u5411\u8f6c\u9012\u9012\u5f52\n        if (r - 1 &gt;= 0 &amp;&amp; board[r - 1][c] != '*')dfs_Search(board, r - 1, c, node, len, res);\n        if (r + 1 &lt; board.size() &amp;&amp; board[r + 1][c] != '*')dfs_Search(board, r + 1, c, node, len, res);\n        if (c - 1 &gt;= 0 &amp;&amp; board[r][c - 1] != '*')dfs_Search(board, r, c - 1, node, len, res);\n        if (c + 1 &lt; board[0].size() &amp;&amp; board[r][c + 1] != '*')dfs_Search(board, r, c + 1, node, len, res);\n        board[r][c] = ch;   \/\/ \u56de\u6eaf\uff0c\u8fd9\u4e2a\u4f4d\u7f6e\u5904\u7406\u5b8c\u4e86\u6062\u590d\u6210\u539f\u6765\u7684\u5b57\u7b26\n    }\n\npublic:\n    vector&lt;string&gt; findWords(vector&lt;vector&lt;char&gt;&gt;&amp; board, vector&lt;string&gt;&amp; words) {\n        int m = board.size();\n        int n = board[0].size();\n\n        \/\/ \u6784\u5efawords\u7684\u5b57\u5178\u6811\n        root = new TrieNode();\n        for (auto&amp; word : words) {\n            if (word.size() &gt; m * n)continue;\t\/\/ \u5b57\u7b26\u4e32\u957f\u5ea6\u8d85\u8fc7\u4e8c\u7ef4\u77e9\u9635\u5c3a\u5bf8\uff0c\u80af\u5b9a\u65e0\u6cd5\u6784\u6210\n            insert(word);\n        }\n\n        \/\/ \u4ee5\u4e8c\u7ef4\u7f51\u683c\u7684\u6bcf\u4e2a\u4f4d\u7f6e(i,j)\u4e3a\u8d77\u70b9\uff0c\u5bfb\u627e\u4ee5\u5176\u4e3a\u9996\u5b57\u7b26\u7684\u6240\u6709\u5b57\u7b26\u4e32\n        vector&lt;string&gt; res;\n        for (int i = 0; i &lt; m; i++) {\n            for (int j = 0; j &lt; n; j++) {\n                dfs_Search(board, i, j, root, 0, res);\n            }\n        }\n        return res;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/07\/search1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/07\/search1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aboard = [[\"o\",\"a\",\"a\",\"n\"],[\"e\",\"t\",\"a\",\"e\"],[\"i\",\"h\",\"k\",\"r\"],[\"i\",\"f\",\"l\",\"v\"]], words = [\"oath\",\"pea\",\"eat\",\"rain\"]\n\u8f93\u51fa\uff1a[\"eat\",\"oath\"]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/07\/search2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/07\/search2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aboard = [[\"a\",\"b\"],[\"c\",\"d\"]], words = [\"abcb\"]\n\u8f93\u51fa\uff1a[]\n<\/code><\/pre>\n<h2 id=\"\u56de\u6eaf\">\u56de\u6eaf<\/h2>\n<h3 id=\"\u7535\u8bdd\u53f7\u7801\u7684\u6570\u5b57\u7ec4\u5408\">\u7535\u8bdd\u53f7\u7801\u7684\u6570\u5b57\u7ec4\u5408<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-124\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u4ec5\u5305\u542b\u6570\u5b57 <code>2-9<\/code> \u7684\u5b57\u7b26\u4e32\uff0c\u8fd4\u56de\u6240\u6709\u5b83\u80fd\u8868\u793a\u7684\u5b57\u6bcd\u7ec4\u5408\u3002\u7b54\u6848\u53ef\u4ee5\u6309 <strong>\u4efb\u610f\u987a\u5e8f<\/strong> \u8fd4\u56de\u3002<\/p>\n<p>\u7ed9\u51fa\u6570\u5b57\u5230\u5b57\u6bcd\u7684\u6620\u5c04\u5982\u4e0b\uff08\u4e0e\u7535\u8bdd\u6309\u952e\u76f8\u540c\uff09\u3002\u6ce8\u610f 1 \u4e0d\u5bf9\u5e94\u4efb\u4f55\u5b57\u6bcd\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2021\/11\/09\/200px-telephone-keypad2svg.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2021\/11\/09\/200px-telephone-keypad2svg.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-103\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8fd9\u91cc\u7684function \u548c lambda\u8868\u8fbe\u5f0f \u9700\u8981\u6ce8\u610f\u4e00\u4e0b<\/p>\n<p><code>function&lt;void(int)&gt;<\/code>\u8868\u793a\u4e00\u4e2a\u53ef\u4ee5\u63a5\u53d7\u4e00\u4e2a<code>int<\/code>\u7c7b\u578b\u53c2\u6570\u5e76\u4e14\u6ca1\u6709\u8fd4\u56de\u503c\u7684\u51fd\u6570\u7c7b\u578b\u3002<\/p>\n<p>\u8fd9\u91cc\uff0c<code>[&amp;]<\/code>\u662fLambda\u8868\u8fbe\u5f0f\u7684\u6355\u83b7\u5217\u8868\uff0c<code>(int i)<\/code>\u662f\u53c2\u6570\u5217\u8868\uff0c\u7701\u7565\u4e86\u8fd4\u56de\u7c7b\u578b\u548c\u51fd\u6570\u4f53\u3002\u4ee5\u4e0b\u662f\u5404\u90e8\u5206\u7684\u89e3\u91ca\uff1a<\/p>\n<ul>\n<li><strong>\u6355\u83b7\u5217\u8868<code>[&amp;]<\/code><\/strong>\uff1a<code>&amp;<\/code>\u8868\u793a\u4ee5\u5f15\u7528\u7684\u65b9\u5f0f\u6355\u83b7\u5916\u90e8\u4f5c\u7528\u57df\u4e2d\u7684\u6240\u6709\u53d8\u91cf\u3002\u8fd9\u610f\u5473\u7740\u5728Lambda\u8868\u8fbe\u5f0f\u5185\u90e8\u53ef\u4ee5\u8bbf\u95ee\u548c\u4fee\u6539\u5176\u5b9a\u4e49\u65f6\u6240\u5728\u4f5c\u7528\u57df\u5185\u7684\u6240\u6709\u53d8\u91cf\u3002\u6bd4\u5982\u4e0b\u9762\u4ee3\u7801\u4e2d\u7684str\u5c31\u662f\u88ab\u4ee5\u5f15\u7528\u7684\u65b9\u5f0f\u6355\u83b7\u7684\u3002<\/li>\n<li><strong>\u53c2\u6570\u5217\u8868<code>(int i)<\/code><\/strong>\uff1a\u8fd9\u8868\u793aLambda\u8868\u8fbe\u5f0f\u63a5\u53d7\u4e00\u4e2a<code>int<\/code>\u7c7b\u578b\u7684\u53c2\u6570<code>i<\/code>\u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-124\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;string&gt;\n#include &lt;functional&gt;\n\nusing namespace std;\n\nclass Solution {\n\nstring MAPPING[10] = { \"\", \"\", \"abc\", \"def\", \"ghi\", \"jkl\", \"mno\", \"pqrs\", \"tuv\", \"wxyz\" };\n\npublic:\n    vector&lt;string&gt; letterCombinations(string digits) {\n\n        int n = digits.size();\n        if (n == 0) return {};\n\n        vector&lt;string&gt; ans;\n\n        string str(n, 0);\n\n        function&lt;void(int)&gt; dfs = [&amp;](int i)\n        {\n                if (i == n)\n                {\n                    ans.emplace_back(str);\n                    return;\n                }\n\n                for (char c : MAPPING[digits[i] - '0'])\n                {\n                    str[i] = c;\n                    dfs(i + 1);\n                }\n        };\n\n        dfs(0);\n\n        return ans;\n      \n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1adigits = \"23\"\n\u8f93\u51fa\uff1a[\"ad\",\"ae\",\"af\",\"bd\",\"be\",\"bf\",\"cd\",\"ce\",\"cf\"]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1adigits = \"\"\n\u8f93\u51fa\uff1a[]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1adigits = \"2\"\n\u8f93\u51fa\uff1a[\"a\",\"b\",\"c\"]\n<\/code><\/pre>\n<h3 id=\"\u7ec4\u5408\">\u7ec4\u5408<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-125\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e24\u4e2a\u6574\u6570 <code>n<\/code> \u548c <code>k<\/code>\uff0c\u8fd4\u56de\u8303\u56f4 <code>[1, n]<\/code> \u4e2d\u6240\u6709\u53ef\u80fd\u7684 <code>k<\/code> \u4e2a\u6570\u7684\u7ec4\u5408\u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u6309 <strong>\u4efb\u4f55\u987a\u5e8f<\/strong> \u8fd4\u56de\u7b54\u6848\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-104\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u7ee7\u7eed\u79ef\u7d2f\u5427<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-125\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; combine(int n, int k) {\n\n        vector&lt;vector&lt;int&gt;&gt; ans;\n        vector&lt;int&gt; path;\n\n        function&lt;void(int)&gt; dfs = [&amp;](int i)\n            {\n                int d = k - path.size();\n                if (d == 0)\n                {\n                    ans.emplace_back(path);\n                    return;\n                }\n\n                for (int j = i; j &gt;= d; j--)\n                {\n                    path.emplace_back(j);\n                    dfs(j - 1);\n                    path.pop_back();\n                }\n\n            };\n\n        dfs(n);\n\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 4, k = 2\n\u8f93\u51fa\uff1a\n[\n  [2,4],\n  [3,4],\n  [2,3],\n  [1,2],\n  [1,3],\n  [1,4],\n]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 1, k = 1\n\u8f93\u51fa\uff1a[[1]]\n<\/code><\/pre>\n<p><strong>\u63d0\u793a\uff1a<\/strong><\/p>\n<ul>\n<li><code>1 &lt;= n &lt;= 20<\/code><\/li>\n<li><code>1 &lt;= k &lt;= n<\/code><\/li>\n<\/ul>\n<h3 id=\"\u5168\u6392\u5217\">\u5168\u6392\u5217<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-126\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u4e0d\u542b\u91cd\u590d\u6570\u5b57\u7684\u6570\u7ec4 <code>nums<\/code> \uff0c\u8fd4\u56de\u5176 <em>\u6240\u6709\u53ef\u80fd\u7684\u5168\u6392\u5217<\/em> \u3002\u4f60\u53ef\u4ee5 <strong>\u6309\u4efb\u610f\u987a\u5e8f<\/strong> \u8fd4\u56de\u7b54\u6848\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-105\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8fd9\u91cc\u6211\u6ca1\u6709\u89e3\u51b3\u7684\u4e00\u4e2a\u95ee\u9898\u5c31\u662f\uff0c\u5982\u4f55\u4fdd\u8bc1\u5df2\u7ecf\u6dfb\u52a0\u8fc7\u7684\u6570\u5b57\u4e0d\u4f1a\u91cd\u590d\u6dfb\u52a0\uff0c\u89e3\u51b3\u65b9\u5f0f\u5c31\u662f\u4f7f\u7528bool\u6765\u8fdb\u884c\u9a8c\u8bc1<\/p>\n<p>\u597d\u4e45\u6ca1\u505a\u9898\u4e86\uff0c\u601d\u8def\u4e0d\u592a\u6e05\u6670<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-126\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;functional&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; permute(vector&lt;int&gt;&amp; nums) {\n\n        int n = nums.size();\n\n        vector&lt;vector&lt;int&gt;&gt; ans;\n        vector&lt;int&gt; path(n), on_path(n);\n\n\n        function&lt;void(int)&gt;  dfs = [&amp;](int i)\n            {\n                if (i == n)\n                {\n                    ans.emplace_back(path);\n                    return;\n                }\n\n                for (int j = 0; j &lt; n; j++)\n                {\n                    if (!on_path[j])\n                    {\n                        path[i] = nums[j];\n                        on_path[j] = true;\n\n                        dfs(i + 1);\n                        on_path[j] = false;\n                    }\n                }\n            };\n\n        dfs(0);\n\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,2,3]\n\u8f93\u51fa\uff1a[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [0,1]\n\u8f93\u51fa\uff1a[[0,1],[1,0]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1]\n\u8f93\u51fa\uff1a[[1]]\n<\/code><\/pre>\n<p><strong>\u63d0\u793a\uff1a<\/strong><\/p>\n<ul>\n<li><code>1 &lt;= nums.length &lt;= 6<\/code><\/li>\n<li><code>-10 &lt;= nums[i] &lt;= 10<\/code><\/li>\n<li><code>nums<\/code> \u4e2d\u7684\u6240\u6709\u6574\u6570 <strong>\u4e92\u4e0d\u76f8\u540c<\/strong><\/li>\n<\/ul>\n<h3 id=\"\u7ec4\u5408\u603b\u548c\">\u7ec4\u5408\u603b\u548c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-127\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a <strong>\u65e0\u91cd\u590d\u5143\u7d20<\/strong> \u7684\u6574\u6570\u6570\u7ec4 <code>candidates<\/code> \u548c\u4e00\u4e2a\u76ee\u6807\u6574\u6570 <code>target<\/code> \uff0c\u627e\u51fa <code>candidates<\/code> \u4e2d\u53ef\u4ee5\u4f7f\u6570\u5b57\u548c\u4e3a\u76ee\u6807\u6570 <code>target<\/code> \u7684 \u6240\u6709 <strong>\u4e0d\u540c\u7ec4\u5408<\/strong> \uff0c\u5e76\u4ee5\u5217\u8868\u5f62\u5f0f\u8fd4\u56de\u3002\u4f60\u53ef\u4ee5\u6309 <strong>\u4efb\u610f\u987a\u5e8f<\/strong> \u8fd4\u56de\u8fd9\u4e9b\u7ec4\u5408\u3002<\/p>\n<p><code>candidates<\/code> \u4e2d\u7684 <strong>\u540c\u4e00\u4e2a<\/strong> \u6570\u5b57\u53ef\u4ee5 <strong>\u65e0\u9650\u5236\u91cd\u590d\u88ab\u9009\u53d6<\/strong> \u3002\u5982\u679c\u81f3\u5c11\u4e00\u4e2a\u6570\u5b57\u7684\u88ab\u9009\u6570\u91cf\u4e0d\u540c\uff0c\u5219\u4e24\u79cd\u7ec4\u5408\u662f\u4e0d\u540c\u7684\u3002<\/p>\n<p>\u5bf9\u4e8e\u7ed9\u5b9a\u7684\u8f93\u5165\uff0c\u4fdd\u8bc1\u548c\u4e3a <code>target<\/code> \u7684\u4e0d\u540c\u7ec4\u5408\u6570\u5c11\u4e8e <code>150<\/code> \u4e2a\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-106\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8fd9\u91cc\u6211\u4eec\u5f15\u5165\u4e86\u4e00\u4e2a\u65b0\u7684\u53d8\u91cfleft\u6765\u8fdb\u884c\u5224\u65ad\u662f\u5426\u521a\u597d\u4e3a0<\/p>\n<p>\u4e3b\u8981\u662f\u5b66\u4e60lambda\u8868\u8fbe\u5f0f\u600e\u4e48\u5199<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-127\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;iostream&gt;\n#include &lt;functional&gt;\n#include &lt;ranges&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    std::vector&lt;std::vector&lt;int&gt;&gt; combinationSum(std::vector&lt;int&gt;&amp; candidates, int target) {\n\n        std::ranges::sort(candidates);\n\n        std::vector&lt;std::vector&lt;int&gt;&gt; ans;\n        std::vector&lt;int&gt; path;\n\n        function&lt;void(int, int)&gt; dfs = [&amp;](int i, int left)\n            {\n                if (left == 0)\n                {\n                    ans.emplace_back(path);\n                    return;\n                }\n\n                if (left &lt; candidates[i])\n                {\n                    return;\n                }\n\n                for (int j = i; j &lt; candidates.size(); j++)\n                {\n                    path.push_back(candidates[j]);\n                    dfs(j, left - candidates[j]);\n                    path.pop_back();\n                }\n            };\n\n        dfs(0, target);\n\n        return ans;\n\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1acandidates = [2,3,6,7], target = 7\n\u8f93\u51fa\uff1a[[2,2,3],[7]]\n\u89e3\u91ca\uff1a\n2 \u548c 3 \u53ef\u4ee5\u5f62\u6210\u4e00\u7ec4\u5019\u9009\uff0c2 + 2 + 3 = 7 \u3002\u6ce8\u610f 2 \u53ef\u4ee5\u4f7f\u7528\u591a\u6b21\u3002\n7 \u4e5f\u662f\u4e00\u4e2a\u5019\u9009\uff0c 7 = 7 \u3002\n\u4ec5\u6709\u8fd9\u4e24\u79cd\u7ec4\u5408\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165: candidates = [2,3,5], target = 8\n\u8f93\u51fa: [[2,2,2,2],[2,3,3],[3,5]]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165: candidates = [2], target = 1\n\u8f93\u51fa: []\n<\/code><\/pre>\n<p>####<\/p>\n<h3 id=\"n-\u7687\u540e\u2171\">N \u7687\u540e\u2161<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-128\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p><strong>n \u7687\u540e\u95ee\u9898<\/strong> \u7814\u7a76\u7684\u662f\u5982\u4f55\u5c06 <code>n<\/code> \u4e2a\u7687\u540e\u653e\u7f6e\u5728 <code>n \u00d7 n<\/code> \u7684\u68cb\u76d8\u4e0a\uff0c\u5e76\u4e14\u4f7f\u7687\u540e\u5f7c\u6b64\u4e4b\u95f4\u4e0d\u80fd\u76f8\u4e92\u653b\u51fb\u3002<\/p>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570 <code>n<\/code> \uff0c\u8fd4\u56de <strong>n \u7687\u540e\u95ee\u9898<\/strong> \u4e0d\u540c\u7684\u89e3\u51b3\u65b9\u6848\u7684\u6570\u91cf\u3002<\/p>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/13\/queens.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/13\/queens.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-107\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6211\u4eec\u8981\u786e\u4fdd\u6bcf\u4e00\u5217 \u6bcf\u4e00\u5217 \u4ee5\u53ca\u4e3b\u5bf9\u89d2\u7ebf\u548c\u526f\u5bf9\u89d2\u7ebf\u90fd\u6ca1\u6709\u91cd\u590d\u7684\u68cb\u5b50.<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-128\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;functional&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int totalNQueens(int n) {\n        int ans = 0;\n        vector&lt;int&gt; on_path(n), diag1(n * 2 - 1), diag2(n * 2 - 1);\n        function&lt;void(int)&gt; dfs = [&amp;](int r)\n            {\n                if (r == n)\n                {\n                    ans++;\n                    return;\n                }\n\n                for (int c = 0; c &lt; n; c++)\n                {\n                    int rc = r - c + n - 1;\n                    if (!on_path[c] &amp;&amp; !diag1[r + c] &amp;&amp; !diag2[rc]) {\n                        on_path[c] = diag1[r + c] = diag2[rc] = true;\n                        dfs(r + 1);\n                        on_path[c] = diag1[r + c] = diag2[rc] = false; \/\/ \u6062\u590d\u73b0\u573a\n                    }\n                }\n            };\n\n        dfs(0);\n\n        return ans;\n    }\n};\n<\/code><\/pre>\n<pre><code>\u8f93\u5165\uff1an = 4\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1a\u5982\u4e0a\u56fe\u6240\u793a\uff0c4 \u7687\u540e\u95ee\u9898\u5b58\u5728\u4e24\u4e2a\u4e0d\u540c\u7684\u89e3\u6cd5\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 1\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<h3 id=\"\u62ec\u53f7\u751f\u6210\">\u62ec\u53f7\u751f\u6210<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-129\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u6570\u5b57 <code>n<\/code> \u4ee3\u8868\u751f\u6210\u62ec\u53f7\u7684\u5bf9\u6570\uff0c\u8bf7\u4f60\u8bbe\u8ba1\u4e00\u4e2a\u51fd\u6570\uff0c\u7528\u4e8e\u80fd\u591f\u751f\u6210\u6240\u6709\u53ef\u80fd\u7684\u5e76\u4e14 <strong>\u6709\u6548\u7684<\/strong> \u62ec\u53f7\u7ec4\u5408\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-108\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-129\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;string&gt;\n#include &lt;functional&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;string&gt; generateParenthesis(int n) {\n        int m = n * 2;\n        vector&lt;string&gt; ans;\n        string path(m, 0);\n        function&lt;void(int, int)&gt; dfs = [&amp;](int i, int open) {\n            if (i == m) {\n                ans.emplace_back(path);\n                return;\n            }\n            if (open &lt; n) { \/\/ \u53ef\u4ee5\u586b\u5de6\u62ec\u53f7\n                path[i] = '(';\n                dfs(i + 1, open + 1);\n            }\n            if (i - open &lt; open) { \/\/ \u53ef\u4ee5\u586b\u53f3\u62ec\u53f7\n                path[i] = ')';\n                dfs(i + 1, open);\n            }\n            };\n        dfs(0, 0);\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 3\n\u8f93\u51fa\uff1a[\"((()))\",\"(()())\",\"(())()\",\"()(())\",\"()()()\"]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 1\n\u8f93\u51fa\uff1a[\"()\"]\n<\/code><\/pre>\n<p><strong>\u63d0\u793a\uff1a<\/strong><\/p>\n<ul>\n<li><code>1 &lt;= n &lt;= 8<\/code><\/li>\n<\/ul>\n<h3 id=\"\u5355\u8bcd\u641c\u7d22\">\u5355\u8bcd\u641c\u7d22<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-130\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a <code>m x n<\/code> \u4e8c\u7ef4\u5b57\u7b26\u7f51\u683c <code>board<\/code> \u548c\u4e00\u4e2a\u5b57\u7b26\u4e32\u5355\u8bcd <code>word<\/code> \u3002\u5982\u679c <code>word<\/code> \u5b58\u5728\u4e8e\u7f51\u683c\u4e2d\uff0c\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/p>\n<p>\u5355\u8bcd\u5fc5\u987b\u6309\u7167\u5b57\u6bcd\u987a\u5e8f\uff0c\u901a\u8fc7\u76f8\u90bb\u7684\u5355\u5143\u683c\u5185\u7684\u5b57\u6bcd\u6784\u6210\uff0c\u5176\u4e2d\u201c\u76f8\u90bb\u201d\u5355\u5143\u683c\u662f\u90a3\u4e9b\u6c34\u5e73\u76f8\u90bb\u6216\u5782\u76f4\u76f8\u90bb\u7684\u5355\u5143\u683c\u3002\u540c\u4e00\u4e2a\u5355\u5143\u683c\u5185\u7684\u5b57\u6bcd\u4e0d\u5141\u8bb8\u88ab\u91cd\u590d\u4f7f\u7528\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-109\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-130\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    bool exist(vector&lt;vector&lt;char&gt;&gt;&amp; board, string word) {\n        for (int i = 0; i &lt; board.size(); i++) {\n            for (int j = 0; j &lt; board[0].size(); j++) {\n                vector&lt;vector&lt;bool&gt;&gt; visited(board.size(), vector&lt;bool&gt;(board[0].size(), false));\n                if (dfs(board, visited, word, 0, i, j)) return true;\n            }\n        }\n\n        return false;\n    }\nprivate:\n    bool dfs(vector&lt;vector&lt;char&gt;&gt;&amp; board, vector&lt;vector&lt;bool&gt;&gt;&amp; visited, const string&amp; word, int str_idx, int i, int j) {\n        if (str_idx == word.size()) return true;\n        \/\/ \u8d8a\u754c\u3001\u88ab\u8bbf\u95ee\u8fc7\u3001\u5f53\u524d\u4f4d\u7f6e\u7684\u5b57\u7b26\u4e0d\u662fword\u5bf9\u5e94\u4f4d\u7f6e\u7684\u5b57\u7b26\n        if (i &gt;= board.size() || i &lt; 0 ||\n            j &gt;= board[0].size() || j &lt; 0 ||\n            visited[i][j] == true || board[i][j] != word[str_idx]) return false;\n\n        visited[i][j] = true;\n        if (dfs(board, visited, word, str_idx + 1, i + 1, j) ||\n            dfs(board, visited, word, str_idx + 1, i - 1, j) ||\n            dfs(board, visited, word, str_idx + 1, i, j + 1) ||\n            dfs(board, visited, word, str_idx + 1, i, j - 1)) return true;\n        visited[i][j] = false;\n\n        return false;\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/04\/word2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/04\/word2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aboard = [[\"A\",\"B\",\"C\",\"E\"],[\"S\",\"F\",\"C\",\"S\"],[\"A\",\"D\",\"E\",\"E\"]], word = \"ABCCED\"\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/04\/word-1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/04\/word-1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aboard = [[\"A\",\"B\",\"C\",\"E\"],[\"S\",\"F\",\"C\",\"S\"],[\"A\",\"D\",\"E\",\"E\"]], word = \"SEE\"\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/10\/15\/word3.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/10\/15\/word3.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aboard = [[\"A\",\"B\",\"C\",\"E\"],[\"S\",\"F\",\"C\",\"S\"],[\"A\",\"D\",\"E\",\"E\"]], word = \"ABCB\"\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<h2 id=\"\u5206\u6cbb-2\">\u5206\u6cbb<\/h2>\n<h3 id=\"\u5c06\u6709\u5e8f\u6570\u7ec4\u8f6c\u6362\u4e3a\u4e8c\u53c9\u641c\u7d22\u6811\">\u5c06\u6709\u5e8f\u6570\u7ec4\u8f6c\u6362\u4e3a\u4e8c\u53c9\u641c\u7d22\u6811<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-131\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \uff0c\u5176\u4e2d\u5143\u7d20\u5df2\u7ecf\u6309 <strong>\u5347\u5e8f<\/strong> \u6392\u5217\uff0c\u8bf7\u4f60\u5c06\u5176\u8f6c\u6362\u4e3a\u4e00\u68f5 \u5e73\u8861 \u4e8c\u53c9\u641c\u7d22\u6811\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-110\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-131\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\n\nstruct TreeNode {\n    int val;\n    TreeNode *left;\n    TreeNode *right;\n    TreeNode() : val(0), left(nullptr), right(nullptr) {}\n    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}\n    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}\n};\n\nclass Solution {\nprivate:\n    \/**\n     * \u5bf9\u8303\u56f4 [left, right) \u7684\u5143\u7d20\u751f\u6210\u6811\n     * \u9009\u62e9\u6570\u7ec4nums\u4e2d\u7ed9\u5b9a\u8303\u56f4\u7684 [left, right) \u7684\u4e2d\u70b9\u4f5c\u4e3a\u6839\u8282\u70b9\uff0c[left, mid)\u4f5c\u4e3a\u5de6\u5b50\u6811\uff0c[mid+1, right]\u4f5c\u4e3a\u53f3\u5b50\u6811\n     * @param nums: \u5143\u7d20\u6570\u7ec4\n     * @param left: \u5de6\u8fb9\u754c\n     * @param right: \u53f3\u8fb9\u754c\n     * @return: \u6784\u9020\u7684\u6839\u8282\u70b9\n    *\/\n    TreeNode* buildTree(vector&lt;int&gt;&amp; nums, int left, int right) {\n        if (left &gt;= right)return nullptr;            \/\/ \u8303\u56f4\u4e3a\u7a7a\uff0c\u5373\u6ca1\u6709\u5143\u7d20\u53ef\u4ee5\u6784\u9020\u8282\u70b9\uff0c\u8fd4\u56de\u7a7a\n        int mid = left + ((right - left) &gt;&gt; 1);     \/\/ \u83b7\u53d6\u8303\u56f4\u4e2d\u70b9\n        TreeNode* node = new TreeNode(nums[mid], buildTree(nums, left, mid), buildTree(nums, mid + 1, right));  \/\/ \u521b\u5efa\u6839\u8282\u70b9\u5e76\u9012\u5f52\u751f\u6210\u5b50\u6811\n        return node;\n    }\npublic:\n    TreeNode* sortedArrayToBST(vector&lt;int&gt;&amp; nums) {\n        return buildTree(nums, 0, nums.size());     \/\/ \u5bf9\u6574\u4e2a\u6570\u7ec4\u8303\u56f4\u7684\u5143\u7d20\u751f\u6210\u6811\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/02\/18\/btree1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/02\/18\/btree1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [-10,-3,0,5,9]\n\u8f93\u51fa\uff1a[0,-3,9,-10,null,5]\n\u89e3\u91ca\uff1a[0,-10,5,null,-3,null,9] \u4e5f\u5c06\u88ab\u89c6\u4e3a\u6b63\u786e\u7b54\u6848\uff1a\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/02\/18\/btree.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/02\/18\/btree.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,3]\n\u8f93\u51fa\uff1a[3,1]\n\u89e3\u91ca\uff1a[1,null,3] \u548c [3,1] \u90fd\u662f\u9ad8\u5ea6\u5e73\u8861\u4e8c\u53c9\u641c\u7d22\u6811\u3002\n<\/code><\/pre>\n<h3 id=\"\u6392\u5e8f\u94fe\u8868\">\u6392\u5e8f\u94fe\u8868<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-132\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u94fe\u8868\u7684\u5934\u7ed3\u70b9 <code>head<\/code> \uff0c\u8bf7\u5c06\u5176\u6309 <strong>\u5347\u5e8f<\/strong> \u6392\u5217\u5e76\u8fd4\u56de <strong>\u6392\u5e8f\u540e\u7684\u94fe\u8868<\/strong> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-111\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-132\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nstruct ListNode {\n    int val;\n    ListNode *next;\n    ListNode() : val(0), next(nullptr) {}\n    ListNode(int x) : val(x), next(nullptr) {}\n    ListNode(int x, ListNode *next) : val(x), next(next) {}\n};\nclass Solution {\npublic:\n    ListNode* sortList(ListNode* head) {\n        return mergeSort(head);\n    }\n\n    \/**\n     * \u5bf9\u7ed9\u5b9a\u7684\u94fe\u8868\u8fdb\u884c\u5f52\u5e76\u6392\u5e8f\n    *\/\n    ListNode* mergeSort(ListNode* head) {\n        \/\/ \u5982\u679c\u94fe\u8868\u4e3a\u7a7a\u6216\u53ea\u6709\u4e00\u4e2a\u8282\u70b9\uff0c\u65e0\u9700\u6392\u5e8f\u76f4\u63a5\u8fd4\u56de\n        if (!head || !head-&gt;next) {\n            return head;\n        }\n        \/\/ \u83b7\u53d6\u94fe\u8868\u7684\u4e2d\u95f4\u8282\u70b9\uff0c\u5206\u522b\u5bf9\u5de6\u53f3\u5b50\u94fe\u8868\u8fdb\u884c\u6392\u5e8f\n        ListNode* mid = getMid(head);\n        ListNode* rightSorted = mergeSort(mid-&gt;next);   \/\/ \u6392\u5e8f\u53f3\u5b50\u94fe\u8868\n        if (mid)mid-&gt;next = nullptr;                     \/\/ \u65ad\u5f00\u4e24\u6bb5\u5b50\u94fe\u8868\n        ListNode* leftSorted = mergeSort(head);         \/\/ \u6392\u5e8f\u5de6\u5b50\u94fe\u8868\n        return mergeTwoLists(leftSorted, rightSorted);  \/\/ \u4e24\u4e2a\u5b50\u94fe\u8868\u5fc5\u7136\u6709\u5e8f\uff0c\u5408\u5e76\u4e24\u4e2a\u6709\u5e8f\u7684\u94fe\u8868\n    }\n\n    \/**\n     * \u83b7\u53d6\u4ee5head\u4e3a\u5934\u8282\u70b9\u7684\u94fe\u8868\u4e2d\u95f4\u8282\u70b9\n     * \u5982\u679c\u94fe\u8868\u957f\u5ea6\u4e3a\u5947\u6570\uff0c\u8fd4\u56de\u6700\u4e2d\u95f4\u7684\u90a3\u4e2a\u8282\u70b9\n     * \u5982\u679c\u94fe\u8868\u957f\u5ea6\u4e3a\u5076\u6570\uff0c\u8fd4\u56de\u4e2d\u95f4\u9760\u5de6\u7684\u90a3\u4e2a\u8282\u70b9\n    *\/\n    ListNode* getMid(ListNode* head) {\n        if (!head)return head;\n        ListNode* slow = head, * fast = head-&gt;next;          \/\/ \u5feb\u6162\u6307\u9488\uff0c\u6162\u6307\u9488\u521d\u59cb\u4e3a\n        while (fast != nullptr &amp;&amp; fast-&gt;next != nullptr)\n        {\n            fast = fast-&gt;next-&gt;next;    \/\/ \u5feb\u6307\u9488\u6bcf\u6b21\u79fb\u52a8\u4e24\u4e2a\u8282\u70b9\n            slow = slow-&gt;next;          \/\/ \u6162\u6307\u9488\u6bcf\u6b21\u79fb\u52a8\u4e00\u4e2a\u8282\u70b9\n        }\n        return slow;    \/\/ \u5feb\u6307\u9488\u5230\u8fbe\u94fe\u8868\u5c3e\u90e8\u65f6\uff0c\u6162\u6307\u9488\u5373\u6307\u5411\u4e2d\u95f4\u8282\u70b9\n    }\n\n    \/**\n     * \u5408\u5e76\u4e24\u4e2a\u6709\u5e8f\u94fe\u8868list1\u548clist2\n    *\/\n    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {\n        ListNode* dummy = new ListNode();   \/\/ \u4f2a\u5934\u8282\u70b9\uff0c\u7528\u4e8e\u5b9a\u4f4d\u5408\u5e76\u94fe\u8868\u7684\u5934\u8282\u70b9\n        ListNode* node = dummy;             \/\/ \u65b0\u94fe\u8868\u5f53\u524d\u7684\u6700\u540e\u4e00\u4e2a\u8282\u70b9\uff0c\u521d\u59cb\u4e3a\u4f2a\u5934\u8282\u70b9\n        \/\/ \u76f4\u5230\u4e24\u4e2a\u94fe\u8868\u90fd\u904d\u5386\u5b8c\u4e86\uff0c\u5408\u5e76\u7ed3\u675f\n        while (list1 != nullptr || list2 != nullptr) {\n            int val1 = list1 == nullptr ? 50001 : list1-&gt;val;   \/\/ \u5982\u679c\u94fe\u88681\u5df2\u7ecf\u904d\u5386\u5b8c\uff0cval1\u53d6\u6700\u5927\u503c\uff0c\u4fdd\u8bc1\u94fe\u88682\u7684\u8282\u70b9\u88ab\u9009\u62e9\u5230       \n            int val2 = list2 == nullptr ? 50001 : list2-&gt;val;   \/\/ \u5982\u679c\u94fe\u88682\u5df2\u7ecf\u904d\u5386\u5b8c\uff0cval2\u53d6\u6700\u5927\u503c\uff0c\u4fdd\u8bc1\u94fe\u88681\u7684\u8282\u70b9\u88ab\u9009\u62e9\u5230 \n            if (val1 &lt; val2) {\n                \/\/ \u94fe\u88681\u7684\u8282\u70b9\u503c\u66f4\u5c0f\uff0c\u52a0\u5165\u5230\u5408\u5e76\u94fe\u8868\uff0c\u5e76\u66f4\u65b0\u94fe\u88681\u6307\u5411\u7684\u8282\u70b9\n                node-&gt;next = list1;\n                list1 = list1-&gt;next;\n            }\n            else {\n                \/\/ \u94fe\u88682\u7684\u8282\u70b9\u503c\u66f4\u5c0f\uff0c\u52a0\u5165\u5230\u5408\u5e76\u94fe\u8868\uff0c\u5e76\u66f4\u65b0\u94fe\u88682\u6307\u5411\u7684\u8282\u70b9\n                node-&gt;next = list2;\n                list2 = list2-&gt;next;\n            }\n            node = node-&gt;next;    \/\/ \u66f4\u65b0\u5408\u5e76\u94fe\u8868\u5f53\u524d\u7684\u6700\u540e\u4e00\u4e2a\u8282\u70b9\u6307\u5411\n        }\n        return dummy-&gt;next;       \/\/ \u4f2a\u5934\u8282\u70b9\u7684\u4e0b\u4e00\u4e2a\u8282\u70b9\u5373\u4e3a\u5408\u5e76\u94fe\u8868\u7684\u5934\u8282\u70b9\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/09\/14\/sort_list_1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/09\/14\/sort_list_1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [4,2,1,3]\n\u8f93\u51fa\uff1a[1,2,3,4]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/09\/14\/sort_list_2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/09\/14\/sort_list_2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = [-1,5,3,4,0]\n\u8f93\u51fa\uff1a[-1,0,3,4,5]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ahead = []\n\u8f93\u51fa\uff1a[]\n<\/code><\/pre>\n<h3 id=\"\u5efa\u7acb\u56db\u53c9\u6811\">\u5efa\u7acb\u56db\u53c9\u6811<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-133\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a <code>n * n<\/code> \u77e9\u9635 <code>grid<\/code> \uff0c\u77e9\u9635\u7531\u82e5\u5e72 <code>0<\/code> \u548c <code>1<\/code> \u7ec4\u6210\u3002\u8bf7\u4f60\u7528\u56db\u53c9\u6811\u8868\u793a\u8be5\u77e9\u9635 <code>grid<\/code> \u3002<\/p>\n<p>\u4f60\u9700\u8981\u8fd4\u56de\u80fd\u8868\u793a\u77e9\u9635 <code>grid<\/code> \u7684 \u56db\u53c9\u6811 \u7684\u6839\u7ed3\u70b9\u3002<\/p>\n<p>\u56db\u53c9\u6811\u6570\u636e\u7ed3\u6784\u4e2d\uff0c\u6bcf\u4e2a\u5185\u90e8\u8282\u70b9\u53ea\u6709\u56db\u4e2a\u5b50\u8282\u70b9\u3002\u6b64\u5916\uff0c\u6bcf\u4e2a\u8282\u70b9\u90fd\u6709\u4e24\u4e2a\u5c5e\u6027\uff1a<\/p>\n<ul>\n<li><code>val<\/code>\uff1a\u50a8\u5b58\u53f6\u5b50\u7ed3\u70b9\u6240\u4ee3\u8868\u7684\u533a\u57df\u7684\u503c\u30021 \u5bf9\u5e94 <strong>True<\/strong>\uff0c0 \u5bf9\u5e94 <strong>False<\/strong>\u3002\u6ce8\u610f\uff0c\u5f53 <code>isLeaf<\/code> \u4e3a <strong>False<\/strong> \u65f6\uff0c\u4f60\u53ef\u4ee5\u628a <strong>True<\/strong> \u6216\u8005 <strong>False<\/strong> \u8d4b\u503c\u7ed9\u8282\u70b9\uff0c\u4e24\u79cd\u503c\u90fd\u4f1a\u88ab\u5224\u9898\u673a\u5236 <strong>\u63a5\u53d7<\/strong> \u3002<\/li>\n<li><code>isLeaf<\/code>: \u5f53\u8fd9\u4e2a\u8282\u70b9\u662f\u4e00\u4e2a\u53f6\u5b50\u7ed3\u70b9\u65f6\u4e3a <strong>True<\/strong>\uff0c\u5982\u679c\u5b83\u6709 4 \u4e2a\u5b50\u8282\u70b9\u5219\u4e3a <strong>False<\/strong> \u3002<\/li>\n<\/ul>\n<pre><code>class Node {\n    public boolean val;\n    public boolean isLeaf;\n    public Node topLeft;\n    public Node topRight;\n    public Node bottomLeft;\n    public Node bottomRight;\n}\n<\/code><\/pre>\n<p>\u6211\u4eec\u53ef\u4ee5\u6309\u4ee5\u4e0b\u6b65\u9aa4\u4e3a\u4e8c\u7ef4\u533a\u57df\u6784\u5efa\u56db\u53c9\u6811\uff1a<\/p>\n<ol start=\"\">\n<li>\u5982\u679c\u5f53\u524d\u7f51\u683c\u7684\u503c\u76f8\u540c\uff08\u5373\uff0c\u5168\u4e3a <code>0<\/code> \u6216\u8005\u5168\u4e3a <code>1<\/code>\uff09\uff0c\u5c06 <code>isLeaf<\/code> \u8bbe\u4e3a True \uff0c\u5c06 <code>val<\/code> \u8bbe\u4e3a\u7f51\u683c\u76f8\u5e94\u7684\u503c\uff0c\u5e76\u5c06\u56db\u4e2a\u5b50\u8282\u70b9\u90fd\u8bbe\u4e3a Null \u7136\u540e\u505c\u6b62\u3002<\/li>\n<li>\u5982\u679c\u5f53\u524d\u7f51\u683c\u7684\u503c\u4e0d\u540c\uff0c\u5c06 <code>isLeaf<\/code> \u8bbe\u4e3a False\uff0c \u5c06 <code>val<\/code> \u8bbe\u4e3a\u4efb\u610f\u503c\uff0c\u7136\u540e\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u5c06\u5f53\u524d\u7f51\u683c\u5212\u5206\u4e3a\u56db\u4e2a\u5b50\u7f51\u683c\u3002<\/li>\n<li>\u4f7f\u7528\u9002\u5f53\u7684\u5b50\u7f51\u683c\u9012\u5f52\u6bcf\u4e2a\u5b50\u8282\u70b9\u3002<\/li>\n<\/ol>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/02\/11\/new_top.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/02\/11\/new_top.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<p>\u5982\u679c\u4f60\u60f3\u4e86\u89e3\u66f4\u591a\u5173\u4e8e\u56db\u53c9\u6811\u7684\u5185\u5bb9\uff0c\u53ef\u4ee5\u53c2\u8003 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Quadtree\">wiki<\/a> \u3002<\/p>\n<p><strong>\u56db\u53c9\u6811\u683c\u5f0f\uff1a<\/strong><\/p>\n<p>\u4f60\u4e0d\u9700\u8981\u9605\u8bfb\u672c\u8282\u6765\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u3002\u53ea\u6709\u5f53\u4f60\u60f3\u4e86\u89e3\u8f93\u51fa\u683c\u5f0f\u65f6\u624d\u4f1a\u8fd9\u6837\u505a\u3002\u8f93\u51fa\u4e3a\u4f7f\u7528\u5c42\u5e8f\u904d\u5386\u540e\u56db\u53c9\u6811\u7684\u5e8f\u5217\u5316\u5f62\u5f0f\uff0c\u5176\u4e2d <code>null<\/code> \u8868\u793a\u8def\u5f84\u7ec8\u6b62\u7b26\uff0c\u5176\u4e0b\u9762\u4e0d\u5b58\u5728\u8282\u70b9\u3002<\/p>\n<p>\u5b83\u4e0e\u4e8c\u53c9\u6811\u7684\u5e8f\u5217\u5316\u975e\u5e38\u76f8\u4f3c\u3002\u552f\u4e00\u7684\u533a\u522b\u662f\u8282\u70b9\u4ee5\u5217\u8868\u5f62\u5f0f\u8868\u793a <code>[isLeaf, val]<\/code> \u3002<\/p>\n<p>\u5982\u679c <code>isLeaf<\/code> \u6216\u8005 <code>val<\/code> \u7684\u503c\u4e3a True \uff0c\u5219\u8868\u793a\u5b83\u5728\u5217\u8868 <code>[isLeaf, val]<\/code> \u4e2d\u7684\u503c\u4e3a <strong>1<\/strong> \uff1b\u5982\u679c <code>isLeaf<\/code> \u6216\u8005 <code>val<\/code> \u7684\u503c\u4e3a False \uff0c\u5219\u8868\u793a\u503c\u4e3a <strong>0<\/strong> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-112\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><a href=\"https:\/\/leetcode.cn\/problems\/construct-quad-tree\/solutions\/2607372\/javapython3cqian-zhui-he-fen-zhi-di-gui-87zts\/?envType=study-plan-v2&amp;envId=top-interview-150\">427. \u5efa\u7acb\u56db\u53c9\u6811 &#8211; \u529b\u6263\uff08LeetCode\uff09<\/a><\/p>\n<p>\u8fd9\u9053\u9898\u96be\u5ea6\u5728\u4e8e\u7406\u89e3\u9898\u76ee\u610f\u601d\uff0c\u5176\u5b9e\u672c\u8eab\u6ca1\u6709\u90a3\u4e48\u56f0\u96be\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-133\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Node {\npublic:\n    bool val;\n    bool isLeaf;\n    Node* topLeft;\n    Node* topRight;\n    Node* bottomLeft;\n    Node* bottomRight;\n\n    Node() {\n        val = false;\n        isLeaf = false;\n        topLeft = NULL;\n        topRight = NULL;\n        bottomLeft = NULL;\n        bottomRight = NULL;\n    }\n\n    Node(bool _val, bool _isLeaf) {\n        val = _val;\n        isLeaf = _isLeaf;\n        topLeft = NULL;\n        topRight = NULL;\n        bottomLeft = NULL;\n        bottomRight = NULL;\n    }\n\n    Node(bool _val, bool _isLeaf, Node* _topLeft, Node* _topRight, Node* _bottomLeft, Node* _bottomRight) {\n        val = _val;\n        isLeaf = _isLeaf;\n        topLeft = _topLeft;\n        topRight = _topRight;\n        bottomLeft = _bottomLeft;\n        bottomRight = _bottomRight;\n    }\n};\n\n\nclass Solution {\npublic:\n    Node* construct(vector&lt;vector&lt;int&gt;&gt;&amp; grid) {\n        int n = grid.size();        \/\/ \u77e9\u9635\u5c3a\u5bf8\n        preSum.resize(n + 1, vector&lt;int&gt;(n + 1));   \/\/ \u521d\u59cb\u5316\u524d\u7f00\u548c\u6570\u7ec4\n        \/\/ \u8ba1\u7b97\u4e8c\u7ef4\u77e9\u9635\u524d\u7f00\u548c\n        for (int i = 0; i &lt; n; i++) {\n            for (int j = 0; j &lt; n; j++) {\n                preSum[i + 1][j + 1] = preSum[i][j + 1] + preSum[i + 1][j] - preSum[i][j] + grid[i][j];\n            }\n        }\n        \/\/ \u6784\u9020\u56db\u53c9\u6811\n        return constructFromArea(grid, 0, 0, n - 1, n - 1);\n    }\nprivate:\n    vector&lt;vector&lt;int&gt;&gt; preSum;     \/\/ \u4e8c\u7ef4\u6570\u7ec4\u524d\u7f00\u548c\n    \/**\n     * \u751f\u6210\u7ed9\u5b9a\u533a\u57df[(ltr, ltc), (rtr, rtc)]\u7684\u5b50\u6811\n     * @param grid: \u8f93\u5165\u77e9\u9635\n     * @param ltr: \u8303\u56f4\u77e9\u9635\u5de6\u4e0a\u89d2\u884c\u6807\n     * @param ltc: \u8303\u56f4\u77e9\u9635\u5de6\u4e0a\u89d2\u5217\u6807\n     * @param rtr: \u8303\u56f4\u77e9\u9635\u53f3\u4e0b\u89d2\u884c\u6807\n     * @param rtc: \u8303\u56f4\u77e9\u9635\u53f3\u4e0b\u89d2\u5217\u6807\n    *\/\n    Node* constructFromArea(vector&lt;vector&lt;int&gt;&gt;&amp; grid, int ltr, int ltc, int rbr, int rbc) {\n        \/\/ areaSum[(si, sj), (i,j)] = preSum[i+1][j+1] \u2013 preSum[si][j+1] \u2013 preSum[i+1][sj] + preSum[si][sj]\n        int areaSum = preSum[rbr + 1][rbc + 1] - preSum[ltr][rbc + 1] - preSum[rbr + 1][ltc] + preSum[ltr][ltc];    \/\/ \u8ba1\u7b97\u533a\u57df\u8303\u56f4\u548c\n        int areaCnts = (rbr - ltr + 1) * (rbc - ltc + 1);       \/\/ \u8ba1\u7b97\u533a\u57df\u5355\u5143\u683c\u4e2a\u6570\n        if (areaSum == 0 || areaSum == areaCnts) {\n            \/\/ \u5982\u679c\u533a\u57df\u548c\u4e3a0\uff0c\u5219\u8be5\u533a\u57df\u5168\u4e3a0\uff1b\u5982\u679c\u533a\u57df\u548c\u7b49\u4e8e\u533a\u57df\u683c\u5b50\u6570\uff0c\u5219\u533a\u57df\u5168\u4e3a1\uff1b\u8fd9\u4e24\u79cd\u60c5\u51b5\u5c31\u662f\u53f6\u5b50\u8282\u70b9\n            return new Node(areaSum \/ areaCnts, true);\n        }\n        int mr = ltr + (rbr - ltr + 1) \/ 2;     \/\/ \u4e2d\u95f4\u884c\u7684\u884c\u53f7\n        int mc = ltc + (rbc - ltc + 1) \/ 2;     \/\/ \u4e2d\u95f4\u5217\u7684\u5217\u53f7\n        \/\/ \u5c06\u5f53\u524d\u533a\u57df\u5212\u5206\u6210\u56db\u4e2a\u5b50\u533a\u57df\uff0c\u9012\u5f52\u751f\u6210\u5b50\u6811\n        return new Node(0, false,\n            constructFromArea(grid, ltr, ltc, mr - 1, mc - 1),\n            constructFromArea(grid, ltr, mc, mr - 1, rbc),\n            constructFromArea(grid, mr, ltc, rbr, mc - 1),\n            constructFromArea(grid, mr, mc, rbr, rbc)\n        );\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/02\/11\/grid1.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/02\/11\/grid1.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1agrid = [[0,1],[1,0]]\n\u8f93\u51fa\uff1a[[0,1],[1,0],[1,1],[1,1],[1,0]]\n\u89e3\u91ca\uff1a\u6b64\u793a\u4f8b\u7684\u89e3\u91ca\u5982\u4e0b\uff1a\n\u8bf7\u6ce8\u610f\uff0c\u5728\u4e0b\u9762\u56db\u53c9\u6811\u7684\u56fe\u793a\u4e2d\uff0c0 \u8868\u793a false\uff0c1 \u8868\u793a True \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/02\/12\/e2mat.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/02\/12\/e2mat.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1agrid = [[1,1,1,1,0,0,0,0],[1,1,1,1,0,0,0,0],[1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1],[1,1,1,1,0,0,0,0],[1,1,1,1,0,0,0,0],[1,1,1,1,0,0,0,0],[1,1,1,1,0,0,0,0]]\n\u8f93\u51fa\uff1a[[0,1],[1,1],[0,1],[1,1],[1,0],null,null,null,null,[1,0],[1,0],[1,1],[1,1]]\n\u89e3\u91ca\uff1a\u7f51\u683c\u4e2d\u7684\u6240\u6709\u503c\u90fd\u4e0d\u76f8\u540c\u3002\u6211\u4eec\u5c06\u7f51\u683c\u5212\u5206\u4e3a\u56db\u4e2a\u5b50\u7f51\u683c\u3002\ntopLeft\uff0cbottomLeft \u548c bottomRight \u5747\u5177\u6709\u76f8\u540c\u7684\u503c\u3002\ntopRight \u5177\u6709\u4e0d\u540c\u7684\u503c\uff0c\u56e0\u6b64\u6211\u4eec\u5c06\u5176\u518d\u5206\u4e3a 4 \u4e2a\u5b50\u7f51\u683c\uff0c\u8fd9\u6837\u6bcf\u4e2a\u5b50\u7f51\u683c\u90fd\u5177\u6709\u76f8\u540c\u7684\u503c\u3002\n\u89e3\u91ca\u5982\u4e0b\u56fe\u6240\u793a\uff1a\n<\/code><\/pre>\n<h3 id=\"\u5408\u5e76k\u4e2a\u5347\u5e8f\u94fe\u8868\">\u5408\u5e76K\u4e2a\u5347\u5e8f\u94fe\u8868<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-134\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u94fe\u8868\u6570\u7ec4\uff0c\u6bcf\u4e2a\u94fe\u8868\u90fd\u5df2\u7ecf\u6309\u5347\u5e8f\u6392\u5217\u3002<\/p>\n<p>\u8bf7\u4f60\u5c06\u6240\u6709\u94fe\u8868\u5408\u5e76\u5230\u4e00\u4e2a\u5347\u5e8f\u94fe\u8868\u4e2d\uff0c\u8fd4\u56de\u5408\u5e76\u540e\u7684\u94fe\u8868\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-113\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u4e00\u4e2a\u5de7\u5999\u7684\u601d\u8def\u662f\uff0c\u628a lists \u4e00\u5206\u4e3a\u4e8c\uff08\u5c3d\u91cf\u5747\u5206\uff09\uff0c\u5148\u5408\u5e76\u524d\u4e00\u534a\u7684\u94fe\u8868\uff0c\u518d\u5408\u5e76\u540e\u4e00\u534a\u7684\u94fe\u8868\uff0c\u7136\u540e\u628a\u8fd9\u4e24\u4e2a\u94fe\u8868\u5408\u5e76\u6210\u6700\u7ec8\u7684\u94fe\u8868\u3002\u5982\u4f55\u5408\u5e76\u524d\u4e00\u534a\u7684\u94fe\u8868\u5462\uff1f\u6211\u4eec\u53ef\u4ee5\u7ee7\u7eed\u4e00\u5206\u4e3a\u4e8c\u3002\u5982\u6b64\u5206\u4e0b\u53bb\u76f4\u5230\u53ea\u6709\u4e00\u4e2a\u94fe\u8868\uff0c\u6b64\u65f6\u65e0\u9700\u5408\u5e76\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-134\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\n    \/\/ 21. \u5408\u5e76\u4e24\u4e2a\u6709\u5e8f\u94fe\u8868\n    ListNode *mergeTwoLists(ListNode *list1, ListNode *list2) {\n        ListNode dummy{}; \/\/ \u7528\u54e8\u5175\u8282\u70b9\u7b80\u5316\u4ee3\u7801\u903b\u8f91\n        auto cur = &amp;dummy; \/\/ cur \u6307\u5411\u65b0\u94fe\u8868\u7684\u672b\u5c3e\n        while (list1 &amp;&amp; list2) {\n            if (list1-&gt;val &lt; list2-&gt;val) {\n                cur-&gt;next = list1; \/\/ \u628a list1 \u52a0\u5230\u65b0\u94fe\u8868\u4e2d\n                list1 = list1-&gt;next;\n            } else { \/\/ \u6ce8\uff1a\u76f8\u7b49\u7684\u60c5\u51b5\u52a0\u54ea\u4e2a\u8282\u70b9\u90fd\u662f\u53ef\u4ee5\u7684\n                cur-&gt;next = list2; \/\/ \u628a list2 \u52a0\u5230\u65b0\u94fe\u8868\u4e2d\n                list2 = list2-&gt;next;\n            }\n            cur = cur-&gt;next;\n        }\n        cur-&gt;next = list1 ? list1 : list2; \/\/ \u62fc\u63a5\u5269\u4f59\u94fe\u8868\n        return dummy.next;\n    }\n\n    \/\/ \u5408\u5e76\u4ece lists[i] \u5230 lists[j-1] \u7684\u94fe\u8868\n    ListNode *mergeKLists(vector&lt;ListNode *&gt; &amp;lists, int i, int j) {\n        int m = j - i;\n        if (m == 0) return nullptr; \/\/ \u6ce8\u610f\u8f93\u5165\u7684 lists \u53ef\u80fd\u662f\u7a7a\u7684\n        if (m == 1) return lists[i]; \/\/ \u65e0\u9700\u5408\u5e76\uff0c\u76f4\u63a5\u8fd4\u56de\n        auto left = mergeKLists(lists, i, i + m \/ 2); \/\/ \u5408\u5e76\u5de6\u534a\u90e8\u5206\n        auto right = mergeKLists(lists, i + m \/ 2, j); \/\/ \u5408\u5e76\u53f3\u534a\u90e8\u5206\n        return mergeTwoLists(left, right); \/\/ \u6700\u540e\u628a\u5de6\u534a\u548c\u53f3\u534a\u5408\u5e76\n    }\n\npublic:\n    ListNode *mergeKLists(vector&lt;ListNode *&gt; &amp;lists) {\n        return mergeKLists(lists, 0, lists.size());\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1alists = [[1,4,5],[1,3,4],[2,6]]\n\u8f93\u51fa\uff1a[1,1,2,3,4,4,5,6]\n\u89e3\u91ca\uff1a\u94fe\u8868\u6570\u7ec4\u5982\u4e0b\uff1a\n[\n  1-&gt;4-&gt;5,\n  1-&gt;3-&gt;4,\n  2-&gt;6\n]\n\u5c06\u5b83\u4eec\u5408\u5e76\u5230\u4e00\u4e2a\u6709\u5e8f\u94fe\u8868\u4e2d\u5f97\u5230\u3002\n1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4-&gt;5-&gt;6\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1alists = []\n\u8f93\u51fa\uff1a[]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1alists = [[]]\n\u8f93\u51fa\uff1a[]\n<\/code><\/pre>\n<h2 id=\"\u5806\">\u5806<\/h2>\n<h3 id=\"\u5408\u5e76k\u4e2a\u5347\u5e8f\u94fe\u8868-2\">\u5408\u5e76K\u4e2a\u5347\u5e8f\u94fe\u8868<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-135\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u94fe\u8868\u6570\u7ec4\uff0c\u6bcf\u4e2a\u94fe\u8868\u90fd\u5df2\u7ecf\u6309\u5347\u5e8f\u6392\u5217\u3002<\/p>\n<p>\u8bf7\u4f60\u5c06\u6240\u6709\u94fe\u8868\u5408\u5e76\u5230\u4e00\u4e2a\u5347\u5e8f\u94fe\u8868\u4e2d\uff0c\u8fd4\u56de\u5408\u5e76\u540e\u7684\u94fe\u8868\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-114\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5408\u5e76\u540e\u7684\u7b2c\u4e00\u4e2a\u8282\u70b9 first\uff0c\u4e00\u5b9a\u662f\u67d0\u4e2a\u94fe\u8868\u7684\u5934\u8282\u70b9\uff08\u56e0\u4e3a\u94fe\u8868\u5df2\u6309\u5347\u5e8f\u6392\u5217\uff09\u3002<\/p>\n<p>\u5408\u5e76\u540e\u7684\u7b2c\u4e8c\u4e2a\u8282\u70b9\uff0c\u53ef\u80fd\u662f\u67d0\u4e2a\u94fe\u8868\u7684\u5934\u8282\u70b9\uff0c\u4e5f\u53ef\u80fd\u662f first \u7684\u4e0b\u4e00\u4e2a\u8282\u70b9\u3002<\/p>\n<p>\u4f8b\u5982\u6709\u4e09\u4e2a\u94fe\u8868 1-&gt;2-&gt;5, 3-&gt;4-&gt;6, 4-&gt;5-&gt;6\uff0c\u627e\u5230\u7b2c\u4e00\u4e2a\u8282\u70b9 1 \u4e4b\u540e\uff0c\u7b2c\u4e8c\u4e2a\u8282\u70b9\u4e0d\u662f\u53e6\u4e00\u4e2a\u94fe\u8868\u7684\u5934\u8282\u70b9\uff0c\u800c\u662f\u8282\u70b9 1 \u7684\u4e0b\u4e00\u4e2a\u8282\u70b9 2\u3002<\/p>\n<p>\u6309\u7167\u8fd9\u4e2a\u8fc7\u7a0b\u7ee7\u7eed\u601d\u8003\uff0c\u6bcf\u5f53\u6211\u4eec\u627e\u5230\u4e00\u4e2a\u8282\u70b9\u503c\u6700\u5c0f\u7684\u8282\u70b9 x\uff0c\u5c31\u628a\u8282\u70b9 x.next \u52a0\u5165\u300c\u53ef\u80fd\u662f\u6700\u5c0f\u8282\u70b9\u300d\u7684\u96c6\u5408\u4e2d\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u6211\u4eec\u9700\u8981\u4e00\u4e2a\u6570\u636e\u7ed3\u6784\uff0c\u5b83\u652f\u6301\uff1a<\/p>\n<p>\u4ece\u6570\u636e\u7ed3\u6784\u4e2d\u627e\u5230\u5e76\u79fb\u9664\u6700\u5c0f\u8282\u70b9\u3002<br \/>\n\u63d2\u5165\u8282\u70b9\u3002<br \/>\n\u8fd9\u53ef\u4ee5\u7528\u6700\u5c0f\u5806\u5b9e\u73b0\u3002\u521d\u59cb\u628a\u6240\u6709\u94fe\u8868\u7684\u5934\u8282\u70b9\u5165\u5806\uff0c\u7136\u540e\u4e0d\u65ad\u5f39\u51fa\u5806\u4e2d\u6700\u5c0f\u8282\u70b9 x\uff0c\u5982\u679c x.next \u4e0d\u4e3a\u7a7a\u5c31\u52a0\u5165\u5806\u4e2d\u3002\u5faa\u73af\u76f4\u5230\u5806\u4e3a\u7a7a\u3002\u628a\u5f39\u51fa\u7684\u8282\u70b9\u6309\u987a\u5e8f\u62fc\u63a5\u8d77\u6765\uff0c\u5c31\u5f97\u5230\u4e86\u7b54\u6848\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-135\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;queue&gt;\n\nusing namespace std;\n\n\nstruct ListNode {\n    int val;\n    ListNode *next;\n    ListNode() : val(0), next(nullptr) {}\n    ListNode(int x) : val(x), next(nullptr) {}\n    ListNode(int x, ListNode *next) : val(x), next(next) {}\n};\n\nclass Solution {\npublic:\n    ListNode* mergeKLists(vector&lt;ListNode*&gt;&amp; lists) {\n        auto cmp = [](const ListNode* a, const ListNode* b) {\n            return a-&gt;val &gt; b-&gt;val; \/\/ \u6700\u5c0f\u5806\n            };\n        priority_queue&lt;ListNode*, vector&lt;ListNode*&gt;, decltype(cmp)&gt; pq;\n        for (auto head : lists) {\n            if (head) {\n                pq.push(head);\n            }\n        }\n\n        ListNode dummy{}; \/\/ \u54e8\u5175\u8282\u70b9\uff0c\u4f5c\u4e3a\u5408\u5e76\u540e\u94fe\u8868\u5934\u8282\u70b9\u7684\u524d\u4e00\u4e2a\u8282\u70b9\n        auto cur = &amp;dummy;\n        while (!pq.empty()) { \/\/ \u5faa\u73af\u76f4\u5230\u5806\u4e3a\u7a7a\n            auto node = pq.top(); \/\/ \u5269\u4f59\u8282\u70b9\u4e2d\u7684\u6700\u5c0f\u8282\u70b9\n            pq.pop();\n            if (node-&gt;next) { \/\/ \u4e0b\u4e00\u4e2a\u8282\u70b9\u4e0d\u4e3a\u7a7a\n                pq.push(node-&gt;next); \/\/ \u4e0b\u4e00\u4e2a\u8282\u70b9\u6709\u53ef\u80fd\u662f\u6700\u5c0f\u8282\u70b9\uff0c\u5165\u5806\n            }\n            cur-&gt;next = node; \/\/ \u5408\u5e76\u5230\u65b0\u94fe\u8868\u4e2d\n            cur = cur-&gt;next; \/\/ \u51c6\u5907\u5408\u5e76\u4e0b\u4e00\u4e2a\u8282\u70b9\n        }\n        return dummy.next; \/\/ \u54e8\u5175\u8282\u70b9\u7684\u4e0b\u4e00\u4e2a\u8282\u70b9\u5c31\u662f\u65b0\u94fe\u8868\u7684\u5934\u8282\u70b9\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1alists = [[1,4,5],[1,3,4],[2,6]]\n\u8f93\u51fa\uff1a[1,1,2,3,4,4,5,6]\n\u89e3\u91ca\uff1a\u94fe\u8868\u6570\u7ec4\u5982\u4e0b\uff1a\n[\n  1-&gt;4-&gt;5,\n  1-&gt;3-&gt;4,\n  2-&gt;6\n]\n\u5c06\u5b83\u4eec\u5408\u5e76\u5230\u4e00\u4e2a\u6709\u5e8f\u94fe\u8868\u4e2d\u5f97\u5230\u3002\n1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4-&gt;5-&gt;6\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1alists = []\n\u8f93\u51fa\uff1a[]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1alists = [[]]\n\u8f93\u51fa\uff1a[]\n<\/code><\/pre>\n<h2 id=\"\u52a8\u6001\u89c4\u5212-2\">\u52a8\u6001\u89c4\u5212<\/h2>\n<h3 id=\"\u6700\u5927\u5b50\u6570\u7ec4\u548c\">\u6700\u5927\u5b50\u6570\u7ec4\u548c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-136\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \uff0c\u8bf7\u4f60\u627e\u51fa\u4e00\u4e2a\u5177\u6709\u6700\u5927\u548c\u7684\u8fde\u7eed\u5b50\u6570\u7ec4\uff08\u5b50\u6570\u7ec4\u6700\u5c11\u5305\u542b\u4e00\u4e2a\u5143\u7d20\uff09\uff0c\u8fd4\u56de\u5176\u6700\u5927\u548c\u3002<\/p>\n<p><strong>\u5b50\u6570\u7ec4<\/strong><\/p>\n<p>\u662f\u6570\u7ec4\u4e2d\u7684\u4e00\u4e2a\u8fde\u7eed\u90e8\u5206\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-115\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>nums[i] \u5355\u72ec\u7ec4\u6210\u4e00\u4e2a\u5b50\u6570\u7ec4\uff0c\u90a3\u4e48 f[i]=nums[i]\u3002<br \/>\nnums[i] \u548c\u524d\u9762\u7684\u5b50\u6570\u7ec4\u62fc\u8d77\u6765\uff0c\u4e5f\u5c31\u662f\u5728\u4ee5 nums[i\u22121] \u7ed3\u5c3e\u7684\u6700\u5927\u5b50\u6570\u7ec4\u548c\u4e4b\u540e\u6dfb\u52a0 nums[i]\uff0c\u90a3\u4e48 f[i]=f[i\u22121]+nums[i]\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-136\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;iostream&gt;\n#include &lt;ranges&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int maxSubArray(vector&lt;int&gt;&amp; nums) {\n        int ans = INT_MIN; \/\/ \u6ce8\u610f\u7b54\u6848\u53ef\u4ee5\u662f\u8d1f\u6570\uff0c\u4e0d\u80fd\u521d\u59cb\u5316\u6210 0\n        int f = 0;\n        for (int x : nums) {\n            f = max(f, 0) + x;\n            ans = max(ans, f);\n        }\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [-2,1,-3,4,-1,2,1,-5,4]\n\u8f93\u51fa\uff1a6\n\u89e3\u91ca\uff1a\u8fde\u7eed\u5b50\u6570\u7ec4 [4,-1,2,1] \u7684\u548c\u6700\u5927\uff0c\u4e3a 6 \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [5,4,-1,7,8]\n\u8f93\u51fa\uff1a23\n<\/code><\/pre>\n<p><strong>\u63d0\u793a\uff1a<\/strong><\/p>\n<ul>\n<li><code>1 &lt;= nums.length &lt;= 105<\/code><\/li>\n<li><code>-104 &lt;= nums[i] &lt;= 104<\/code><\/li>\n<\/ul>\n<h3 id=\"\u73af\u5f62\u5b50\u6570\u7ec4\u6700\u5927\u548c\">\u73af\u5f62\u5b50\u6570\u7ec4\u6700\u5927\u548c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-137\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u957f\u5ea6\u4e3a <code>n<\/code> \u7684<strong>\u73af\u5f62\u6574\u6570\u6570\u7ec4<\/strong> <code>nums<\/code> \uff0c\u8fd4\u56de <em><code>nums<\/code> \u7684\u975e\u7a7a <strong>\u5b50\u6570\u7ec4<\/strong> \u7684\u6700\u5927\u53ef\u80fd\u548c<\/em> \u3002<\/p>\n<p><strong>\u73af\u5f62\u6570\u7ec4<\/strong> \u610f\u5473\u7740\u6570\u7ec4\u7684\u672b\u7aef\u5c06\u4f1a\u4e0e\u5f00\u5934\u76f8\u8fde\u5448\u73af\u72b6\u3002\u5f62\u5f0f\u4e0a\uff0c <code>nums[i]<\/code> \u7684\u4e0b\u4e00\u4e2a\u5143\u7d20\u662f <code>nums[(i + 1) % n]<\/code> \uff0c <code>nums[i]<\/code> \u7684\u524d\u4e00\u4e2a\u5143\u7d20\u662f <code>nums[(i - 1 + n) % n]<\/code> \u3002<\/p>\n<p><strong>\u5b50\u6570\u7ec4<\/strong> \u6700\u591a\u53ea\u80fd\u5305\u542b\u56fa\u5b9a\u7f13\u51b2\u533a <code>nums<\/code> \u4e2d\u7684\u6bcf\u4e2a\u5143\u7d20\u4e00\u6b21\u3002\u5f62\u5f0f\u4e0a\uff0c\u5bf9\u4e8e\u5b50\u6570\u7ec4 <code>nums[i], nums[i + 1], ..., nums[j]<\/code> \uff0c\u4e0d\u5b58\u5728 <code>i &lt;= k1, k2 &lt;= j<\/code> \u5176\u4e2d <code>k1 % n == k2 % n<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-116\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/pic.leetcode.cn\/1689750394-drKSAI-lc918-c.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/pic.leetcode.cn\/1689750394-drKSAI-lc918-c.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"lc918-c.png\" \/><\/div><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-137\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int maxSubarraySumCircular(vector&lt;int&gt;&amp; nums) {\n        int max_s = INT_MIN; \/\/ \u6700\u5927\u5b50\u6570\u7ec4\u548c\uff0c\u4e0d\u80fd\u4e3a\u7a7a\n        int min_s = 0;       \/\/ \u6700\u5c0f\u5b50\u6570\u7ec4\u548c\uff0c\u53ef\u4ee5\u4e3a\u7a7a\n        int max_f = 0, min_f = 0, sum = 0;\n        for (int x : nums) {\n            \/\/ \u4ee5 nums[i-1] \u7ed3\u5c3e\u7684\u5b50\u6570\u7ec4\u9009\u6216\u4e0d\u9009\uff08\u53d6 max\uff09+ x = \u4ee5 x \u7ed3\u5c3e\u7684\u6700\u5927\u5b50\u6570\u7ec4\u548c\n            max_f = max(max_f, 0) + x;\n            max_s = max(max_s, max_f);\n            \/\/ \u4ee5 nums[i-1] \u7ed3\u5c3e\u7684\u5b50\u6570\u7ec4\u9009\u6216\u4e0d\u9009\uff08\u53d6 min\uff09+ x = \u4ee5 x \u7ed3\u5c3e\u7684\u6700\u5c0f\u5b50\u6570\u7ec4\u548c\n            min_f = min(min_f, 0) + x;\n            min_s = min(min_s, min_f);\n            sum += x;\n        }\n        return sum == min_s ? max_s : max(max_s, sum - min_s);\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,-2,3,-2]\n\u8f93\u51fa\uff1a3\n\u89e3\u91ca\uff1a\u4ece\u5b50\u6570\u7ec4 [3] \u5f97\u5230\u6700\u5927\u548c 3\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [5,-3,5]\n\u8f93\u51fa\uff1a10\n\u89e3\u91ca\uff1a\u4ece\u5b50\u6570\u7ec4 [5,5] \u5f97\u5230\u6700\u5927\u548c 5 + 5 = 10\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [3,-2,2,-3]\n\u8f93\u51fa\uff1a3\n\u89e3\u91ca\uff1a\u4ece\u5b50\u6570\u7ec4 [3] \u548c [3,-2,2] \u90fd\u53ef\u4ee5\u5f97\u5230\u6700\u5927\u548c 3\n<\/code><\/pre>\n<h2 id=\"\u4e8c\u5206\u67e5\u627e\">\u4e8c\u5206\u67e5\u627e<\/h2>\n<h3 id=\"\u641c\u7d22\u63d2\u5165\u4f4d\u7f6e\">\u641c\u7d22\u63d2\u5165\u4f4d\u7f6e<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-138\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u6392\u5e8f\u6570\u7ec4\u548c\u4e00\u4e2a\u76ee\u6807\u503c\uff0c\u5728\u6570\u7ec4\u4e2d\u627e\u5230\u76ee\u6807\u503c\uff0c\u5e76\u8fd4\u56de\u5176\u7d22\u5f15\u3002\u5982\u679c\u76ee\u6807\u503c\u4e0d\u5b58\u5728\u4e8e\u6570\u7ec4\u4e2d\uff0c\u8fd4\u56de\u5b83\u5c06\u4f1a\u88ab\u6309\u987a\u5e8f\u63d2\u5165\u7684\u4f4d\u7f6e\u3002<\/p>\n<p>\u8bf7\u5fc5\u987b\u4f7f\u7528\u65f6\u95f4\u590d\u6742\u5ea6\u4e3a <code>O(log n)<\/code> \u7684\u7b97\u6cd5\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-117\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6ce8\u610f\u5148\u51cf\u540e\u52a0\uff0c\u9632\u6b62\u6ea2\u51fa<\/p>\n<p>\u7b2c\u4e8c\u6700\u597d\u4f7f\u7528\u5f00\u533a\u95f4\uff0c\u66f4\u597d\u7528\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-138\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\n    \/\/ lower_bound \u8fd4\u56de\u6700\u5c0f\u7684\u6ee1\u8db3 nums[i] &gt;= target \u7684 i\n    \/\/ \u5982\u679c\u6570\u7ec4\u4e3a\u7a7a\uff0c\u6216\u8005\u6240\u6709\u6570\u90fd &lt; target\uff0c\u5219\u8fd4\u56de nums.size()\n    \/\/ \u8981\u6c42 nums \u662f\u975e\u9012\u51cf\u7684\uff0c\u5373 nums[i] &lt;= nums[i + 1]\n\n    \/\/ \u95ed\u533a\u95f4\u5199\u6cd5\n    int lower_bound(vector&lt;int&gt;&amp; nums, int target) {\n        int left = 0, right = (int)nums.size() - 1; \/\/ \u95ed\u533a\u95f4 [left, right]\n        while (left &lt;= right) { \/\/ \u533a\u95f4\u4e0d\u4e3a\u7a7a\n            \/\/ \u5faa\u73af\u4e0d\u53d8\u91cf\uff1a\n            \/\/ nums[left-1] &lt; target\n            \/\/ nums[right+1] &gt;= target\n            int mid = left + (right - left) \/ 2;\n            if (nums[mid] &lt; target) {\n                left = mid + 1; \/\/ \u8303\u56f4\u7f29\u5c0f\u5230 [mid+1, right]\n            }\n            else {\n                right = mid - 1; \/\/ \u8303\u56f4\u7f29\u5c0f\u5230 [left, mid-1]\n            }\n        }\n        return left;\n    }\n\n    \/\/ \u5de6\u95ed\u53f3\u5f00\u533a\u95f4\u5199\u6cd5\n    int lower_bound2(vector&lt;int&gt;&amp; nums, int target) {\n        int left = 0, right = nums.size(); \/\/ \u5de6\u95ed\u53f3\u5f00\u533a\u95f4 [left, right)\n        while (left &lt; right) { \/\/ \u533a\u95f4\u4e0d\u4e3a\u7a7a\n            \/\/ \u5faa\u73af\u4e0d\u53d8\u91cf\uff1a\n            \/\/ nums[left-1] &lt; target\n            \/\/ nums[right] &gt;= target\n            int mid = left + (right - left) \/ 2;\n            if (nums[mid] &lt; target) {\n                left = mid + 1; \/\/ \u8303\u56f4\u7f29\u5c0f\u5230 [mid+1, right)\n            }\n            else {\n                right = mid; \/\/ \u8303\u56f4\u7f29\u5c0f\u5230 [left, mid)\n            }\n        }\n        return left;\n    }\n\n    \/\/ \u5f00\u533a\u95f4\u5199\u6cd5\n    int lower_bound3(vector&lt;int&gt;&amp; nums, int target) {\n        int left = -1, right = nums.size(); \/\/ \u5f00\u533a\u95f4 (left, right)\n        while (left + 1 &lt; right) { \/\/ \u533a\u95f4\u4e0d\u4e3a\u7a7a\n            \/\/ \u5faa\u73af\u4e0d\u53d8\u91cf\uff1a\n            \/\/ nums[left] &lt; target\n            \/\/ nums[right] &gt;= target\n            int mid = left + (right - left) \/ 2;\n            if (nums[mid] &lt; target) {\n                left = mid; \/\/ \u8303\u56f4\u7f29\u5c0f\u5230 (mid, right)\n            }\n            else {\n                right = mid; \/\/ \u8303\u56f4\u7f29\u5c0f\u5230 (left, mid)\n            }\n        }\n        return right;\n    }\n\npublic:\n    int searchInsert(vector&lt;int&gt;&amp; nums, int target) {\n        return lower_bound3(nums, target); \/\/ \u9009\u62e9\u5176\u4e2d\u4e00\u79cd\u5199\u6cd5\u5373\u53ef\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: nums = [1,3,5,6], target = 5\n\u8f93\u51fa: 2\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: nums = [1,3,5,6], target = 2\n\u8f93\u51fa: 1\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3:<\/strong><\/p>\n<pre><code>\u8f93\u5165: nums = [1,3,5,6], target = 7\n\u8f93\u51fa: 4\n<\/code><\/pre>\n<h3 id=\"\u641c\u7d22\u4e8c\u7ef4\u77e9\u9635\">\u641c\u7d22\u4e8c\u7ef4\u77e9\u9635<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-139\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6ee1\u8db3\u4e0b\u8ff0\u4e24\u6761\u5c5e\u6027\u7684 <code>m x n<\/code> \u6574\u6570\u77e9\u9635\uff1a<\/p>\n<ul>\n<li>\u6bcf\u884c\u4e2d\u7684\u6574\u6570\u4ece\u5de6\u5230\u53f3\u6309\u975e\u4e25\u683c\u9012\u589e\u987a\u5e8f\u6392\u5217\u3002<\/li>\n<li>\u6bcf\u884c\u7684\u7b2c\u4e00\u4e2a\u6574\u6570\u5927\u4e8e\u524d\u4e00\u884c\u7684\u6700\u540e\u4e00\u4e2a\u6574\u6570\u3002<\/li>\n<\/ul>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570 <code>target<\/code> \uff0c\u5982\u679c <code>target<\/code> \u5728\u77e9\u9635\u4e2d\uff0c\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-118\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u4ee3\u7801\u5b9e\u73b0\u65f6\uff0c\u5e76\u4e0d\u9700\u8981\u771f\u7684\u62fc\u6210\u4e00\u4e2a\u957f\u4e3a <em>mn<\/em> \u7684\u6570\u7ec4 <em>a<\/em>\uff0c\u800c\u662f\u5c06 <em>a<\/em>[<em>i<\/em>] \u8f6c\u6362\u6210\u77e9\u9635\u4e2d\u7684\u884c\u53f7\u548c\u5217\u53f7\u3002\u4f8b\u5982\u793a\u4f8b 1\uff0c<em>i<\/em>=9 \u5bf9\u5e94\u7684 <em>a<\/em>[<em>i<\/em>]=30\uff0c\u7531\u4e8e\u77e9\u9635\u6709 <em>n<\/em>=4 \u5217\uff0c\u6240\u4ee5 <em>a<\/em>[<em>i<\/em>] \u5728 i\/n=2 \u884c\uff0c\u5728 <em>i<\/em>mod<em>n<\/em>=1 \u5217\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-139\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    bool searchMatrix(vector&lt;vector&lt;int&gt;&gt;&amp; matrix, int target) {\n\n        int column = matrix[0].size();\n        int row = matrix.size();\n        \n            int left = -1, right = row*column;\n            while (left + 1 &lt; right)\n            {\n                int mid = left + (right - left) \/ 2;\n                if (matrix[mid\/column][mid%column] == target)\n                {\n                    return true;\n                }\n\n                if (matrix[mid \/ column][mid % column] &lt; target)\n                {\n                    left = mid;\n                }\n                else\n                {\n                    right = mid;\n                }\n            }\n        \n\n        return false;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/10\/05\/mat.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/10\/05\/mat.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1amatrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/11\/25\/mat2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode-cn.com\/aliyun-lc-upload\/uploads\/2020\/11\/25\/mat2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1amatrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<h3 id=\"\u5bfb\u627e\u5cf0\u503c\">\u5bfb\u627e\u5cf0\u503c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-140\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u5cf0\u503c\u5143\u7d20\u662f\u6307\u5176\u503c\u4e25\u683c\u5927\u4e8e\u5de6\u53f3\u76f8\u90bb\u503c\u7684\u5143\u7d20\u3002<\/p>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code>\uff0c\u627e\u5230\u5cf0\u503c\u5143\u7d20\u5e76\u8fd4\u56de\u5176\u7d22\u5f15\u3002\u6570\u7ec4\u53ef\u80fd\u5305\u542b\u591a\u4e2a\u5cf0\u503c\uff0c\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u8fd4\u56de <strong>\u4efb\u4f55\u4e00\u4e2a\u5cf0\u503c<\/strong> \u6240\u5728\u4f4d\u7f6e\u5373\u53ef\u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u5047\u8bbe <code>nums[-1] = nums[n] = -\u221e<\/code> \u3002<\/p>\n<p>\u4f60\u5fc5\u987b\u5b9e\u73b0\u65f6\u95f4\u590d\u6742\u5ea6\u4e3a <code>O(log n)<\/code> \u7684\u7b97\u6cd5\u6765\u89e3\u51b3\u6b64\u95ee\u9898\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-119\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><strong>\u5b9a\u7406<\/strong>\uff1a\u5982\u679c <em>i<\/em>&lt;<em>n<\/em>\u22121 \u4e14 <em>nums<\/em>[<em>i<\/em>]&lt;<em>nums<\/em>[<em>i<\/em>+1]\uff0c\u90a3\u4e48\u5728\u4e0b\u6807 [<em>i<\/em>+1,<em>n<\/em>\u22121] \u4e2d\u4e00\u5b9a\u5b58\u5728\u81f3\u5c11\u4e00\u4e2a\u5cf0\u503c\u3002<\/p>\n<p>\u540c\u7406\u53ef\u5f97\uff0c\u5982\u679c <em>i<\/em>&lt;<em>n<\/em>\u22121 \u4e14 <em>nums<\/em>[<em>i<\/em>]&gt;<em>nums<\/em>[<em>i<\/em>+1]\uff0c\u90a3\u4e48\u5728 [0,<em>i<\/em>] \u4e2d\u4e00\u5b9a\u5b58\u5728\u81f3\u5c11\u4e00\u4e2a\u5cf0\u503c\u3002<\/p>\n<p>\u8bb0\u4f4f\u8fd9\u4e2a\u5c31\u884c\u4e86<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-140\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int findPeakElement(vector&lt;int&gt;&amp; nums) {\n\n        int left = -1, right = nums.size() - 1;\n        while (left + 1 &lt; right)\n        {\n            int mid = left + (right - left) \/ 2;\n            if (nums[mid] &gt; nums[mid + 1])\n            {\n                right = mid;\n            }\n            else\n            {\n                left = mid;\n            }\n\n\n        }\n\n        return right;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,2,3,1]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1a3 \u662f\u5cf0\u503c\u5143\u7d20\uff0c\u4f60\u7684\u51fd\u6570\u5e94\u8be5\u8fd4\u56de\u5176\u7d22\u5f15 2\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1,2,1,3,5,6,4]\n\u8f93\u51fa\uff1a1 \u6216 5 \n\u89e3\u91ca\uff1a\u4f60\u7684\u51fd\u6570\u53ef\u4ee5\u8fd4\u56de\u7d22\u5f15 1\uff0c\u5176\u5cf0\u503c\u5143\u7d20\u4e3a 2\uff1b\n     \u6216\u8005\u8fd4\u56de\u7d22\u5f15 5\uff0c \u5176\u5cf0\u503c\u5143\u7d20\u4e3a 6\u3002\n<\/code><\/pre>\n<h3 id=\"\u641c\u7d22\u65cb\u8f6c\u6392\u5217\u6570\u7ec4\">\u641c\u7d22\u65cb\u8f6c\u6392\u5217\u6570\u7ec4<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-141\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \u6309\u5347\u5e8f\u6392\u5217\uff0c\u6570\u7ec4\u4e2d\u7684\u503c <strong>\u4e92\u4e0d\u76f8\u540c<\/strong> \u3002<\/p>\n<p>\u5728\u4f20\u9012\u7ed9\u51fd\u6570\u4e4b\u524d\uff0c<code>nums<\/code> \u5728\u9884\u5148\u672a\u77e5\u7684\u67d0\u4e2a\u4e0b\u6807 <code>k<\/code>\uff08<code>0 &lt;= k &lt; nums.length<\/code>\uff09\u4e0a\u8fdb\u884c\u4e86 <strong>\u65cb\u8f6c<\/strong>\uff0c\u4f7f\u6570\u7ec4\u53d8\u4e3a <code>[nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]<\/code>\uff08\u4e0b\u6807 <strong>\u4ece 0 \u5f00\u59cb<\/strong> \u8ba1\u6570\uff09\u3002\u4f8b\u5982\uff0c <code>[0,1,2,4,5,6,7]<\/code> \u5728\u4e0b\u6807 <code>3<\/code> \u5904\u7ecf\u65cb\u8f6c\u540e\u53ef\u80fd\u53d8\u4e3a <code>[4,5,6,7,0,1,2]<\/code> \u3002<\/p>\n<p>\u7ed9\u4f60 <strong>\u65cb\u8f6c\u540e<\/strong> \u7684\u6570\u7ec4 <code>nums<\/code> \u548c\u4e00\u4e2a\u6574\u6570 <code>target<\/code> \uff0c\u5982\u679c <code>nums<\/code> \u4e2d\u5b58\u5728\u8fd9\u4e2a\u76ee\u6807\u503c <code>target<\/code> \uff0c\u5219\u8fd4\u56de\u5b83\u7684\u4e0b\u6807\uff0c\u5426\u5219\u8fd4\u56de <code>-1<\/code> \u3002<\/p>\n<p>\u4f60\u5fc5\u987b\u8bbe\u8ba1\u4e00\u4e2a\u65f6\u95f4\u590d\u6742\u5ea6\u4e3a <code>O(log n)<\/code> \u7684\u7b97\u6cd5\u89e3\u51b3\u6b64\u95ee\u9898\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-120\">\u9898\u76ee\u5206\u6790<\/h4>\n<ul>\n<li>\u5982\u679c <em>target<\/em>&gt;<em>nums<\/em>[<em>n<\/em>\u22121]\uff0c\u90a3\u4e48 <em>target<\/em> \u4e00\u5b9a\u5728\u7b2c\u4e00\u6bb5 [0,<em>i<\/em>\u22121] \u4e2d\uff0c\u5728 [0,<em>i<\/em>\u22121] \u4e2d\u4e8c\u5206\u67e5\u627e <em>target<\/em>\u3002<\/li>\n<li>\u5982\u679c target\u2264nums[n\u22121]\uff0c\u90a3\u4e48\uff1a<br \/>\n\u5982\u679c i=0\uff0c\u8bf4\u660e nums \u662f\u9012\u589e\u7684\uff0c\u76f4\u63a5\u5728 [0,n\u22121] \u4e2d\u4e8c\u5206\u67e5\u627e target\u3002<br \/>\n\u5982\u679c i&gt;0\uff0c\u90a3\u4e48 target \u4e00\u5b9a\u5728\u7b2c\u4e8c\u6bb5 [i,n\u22121] \u4e2d\uff0c\u5728 [i,n\u22121] \u4e2d\u4e8c\u5206\u67e5\u627e target\u3002<br \/>\n\u8fd9\u4e24\u79cd\u60c5\u51b5\u53ef\u4ee5\u5408\u5e76\u6210\uff1a\u5728 [i,n\u22121] \u4e2d\u4e8c\u5206\u67e5\u627e target\u3002<\/li>\n<\/ul>\n<p>\u4e8c\u5206\u7684\u8303\u56f4\u53ef\u4ee5\u662f <code>[0,n\u22122]<\/code>\u3002<\/p>\n<p>\u8fd9\u662f\u56e0\u4e3a\uff0c\u5982\u679c nums[n\u22121] \u662f\u6570\u7ec4\u6700\u5c0f\u503c\uff0c\u90a3\u4e48 nums \u5206\u6210\u4e24\u6bb5\uff0c\u7b2c\u4e00\u6bb5 [0,n\u22122]\uff0c\u7b2c\u4e8c\u6bb5 [n\u22121,n\u22121]\uff0c\u4e14\u7b2c\u4e00\u6bb5\u7684\u6240\u6709\u6570\u90fd\u5927\u4e8e nums[n\u22121]\u3002\u6bcf\u6b21 x \u548c nums[n\u22121] \u6bd4\u5927\u5c0f\uff0c\u4e00\u5b9a\u662f x&gt;nums[n\u22121]\u3002\u8fd9\u610f\u5473\u7740\u6bcf\u6b21\u4e8c\u5206\u66f4\u65b0\u7684\u90fd\u662f left\uff0c\u90a3\u4e48\u6700\u7ec8\u7b54\u6848\u81ea\u7136\u5c31\u662f n\u22121\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-141\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\nusing namespace std;\n\nclass Solution {\n    \/\/ 153. \u5bfb\u627e\u65cb\u8f6c\u6392\u5e8f\u6570\u7ec4\u4e2d\u7684\u6700\u5c0f\u503c\n    int findMin(vector&lt;int&gt;&amp; nums) {\n        int left = -1, right = nums.size() - 1; \/\/ \u5f00\u533a\u95f4 (-1, n-1)\n        while (left + 1 &lt; right) { \/\/ \u5f00\u533a\u95f4\u4e0d\u4e3a\u7a7a\n            int mid = left + (right - left) \/ 2;\n            if (nums[mid] &lt; nums.back()) {\n                right = mid;\n            }\n            else {\n                left = mid;\n            }\n        }\n        return right;\n    }\n\n    \/\/ \u6709\u5e8f\u6570\u7ec4\u4e2d\u627e target \u7684\u4e0b\u6807\n    int lower_bound(vector&lt;int&gt;&amp; nums, int left, int right, int target) {\n        while (left + 1 &lt; right) { \/\/ \u5f00\u533a\u95f4\u4e0d\u4e3a\u7a7a\n            \/\/ \u5faa\u73af\u4e0d\u53d8\u91cf\uff1a\n            \/\/ nums[left] &lt; target\n            \/\/ nums[right] &gt;= target\n            int mid = left + (right - left) \/ 2;\n            if (nums[mid] &lt; target) {\n                left = mid; \/\/ \u8303\u56f4\u7f29\u5c0f\u5230 (mid, right)\n            }\n            else {\n                right = mid; \/\/ \u8303\u56f4\u7f29\u5c0f\u5230 (left, mid)\n            }\n        }\n        return nums[right] == target ? right : -1;\n    }\n\npublic:\n    int search(vector&lt;int&gt;&amp; nums, int target) {\n        int i = findMin(nums);\n        if (target &gt; nums.back()) { \/\/ target \u5728\u7b2c\u4e00\u6bb5\n            return lower_bound(nums, -1, i, target); \/\/ \u5f00\u533a\u95f4 (-1, i)\n        }\n        \/\/ target \u5728\u7b2c\u4e8c\u6bb5\n        return lower_bound(nums, i - 1, nums.size(), target); \/\/ \u5f00\u533a\u95f4 (i-1, n)\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [4,5,6,7,0,1,2], target = 0\n\u8f93\u51fa\uff1a4\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [4,5,6,7,0,1,2], target = 3\n\u8f93\u51fa\uff1a-1\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1], target = 0\n\u8f93\u51fa\uff1a-1\n<\/code><\/pre>\n<h3 id=\"\u5728\u6392\u5e8f\u6570\u7ec4\u4e2d\u67e5\u627e\u5143\u7d20\u7684\u7b2c\u4e00\u4e2a\u548c\u6700\u540e\u4e00\u4e2a\u4f4d\u7f6e\">\u5728\u6392\u5e8f\u6570\u7ec4\u4e2d\u67e5\u627e\u5143\u7d20\u7684\u7b2c\u4e00\u4e2a\u548c\u6700\u540e\u4e00\u4e2a\u4f4d\u7f6e<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-142\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6309\u7167\u975e\u9012\u51cf\u987a\u5e8f\u6392\u5217\u7684\u6574\u6570\u6570\u7ec4 <code>nums<\/code>\uff0c\u548c\u4e00\u4e2a\u76ee\u6807\u503c <code>target<\/code>\u3002\u8bf7\u4f60\u627e\u51fa\u7ed9\u5b9a\u76ee\u6807\u503c\u5728\u6570\u7ec4\u4e2d\u7684\u5f00\u59cb\u4f4d\u7f6e\u548c\u7ed3\u675f\u4f4d\u7f6e\u3002<\/p>\n<p>\u5982\u679c\u6570\u7ec4\u4e2d\u4e0d\u5b58\u5728\u76ee\u6807\u503c <code>target<\/code>\uff0c\u8fd4\u56de <code>[-1, -1]<\/code>\u3002<\/p>\n<p>\u4f60\u5fc5\u987b\u8bbe\u8ba1\u5e76\u5b9e\u73b0\u65f6\u95f4\u590d\u6742\u5ea6\u4e3a <code>O(log n)<\/code> \u7684\u7b97\u6cd5\u89e3\u51b3\u6b64\u95ee\u9898\u3002<\/p>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [5,7,7,8,8,10], target = 8\n\u8f93\u51fa\uff1a[3,4]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [5,7,7,8,8,10], target = 6\n\u8f93\u51fa\uff1a[-1,-1]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [], target = 0\n\u8f93\u51fa\uff1a[-1,-1]\n<\/code><\/pre>\n<h4 id=\"\u9898\u76ee\u5206\u6790-121\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5148\u5224\u65ad\u662f\u5426\u5b58\u5728target,\u7136\u540e\u901a\u8fc7target\u52a01\u627e\u5230target\u7684\u540e\u4e00\u4e0b\u6807\uff0c\u7136\u540e\u4e0b\u6807\u51cf\u4e00\u5c31\u884c\u4e86\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-142\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n\n    \/\/ \u5f00\u533a\u95f4\u5199\u6cd5\n    int lower_bound3(vector&lt;int&gt;&amp; nums, int target) {\n        int left = -1, right = nums.size(); \/\/ \u5f00\u533a\u95f4 (left, right)\n        while (left + 1 &lt; right) { \/\/ \u533a\u95f4\u4e0d\u4e3a\u7a7a\n            \/\/ \u5faa\u73af\u4e0d\u53d8\u91cf\uff1a\n            \/\/ nums[left] &lt; target\n            \/\/ nums[right] &gt;= target\n            int mid = left + (right - left) \/ 2;\n            if (nums[mid] &lt; target) {\n                left = mid; \/\/ \u8303\u56f4\u7f29\u5c0f\u5230 (mid, right)\n            }\n            else {\n                right = mid; \/\/ \u8303\u56f4\u7f29\u5c0f\u5230 (left, mid)\n            }\n            \/\/ \u4e5f\u53ef\u4ee5\u8fd9\u6837\u5199\n            \/\/ (nums[mid] &lt; target ? left : right) = mid;\n        }\n        return right;\n    }\n\n    vector&lt;int&gt; searchRange(vector&lt;int&gt;&amp; nums, int target) {\n        int start = lower_bound3(nums, target); \/\/ \u4f7f\u7528\u5176\u4e2d\u4e00\u79cd\u5199\u6cd5\u5373\u53ef\n        if (start == nums.size() || nums[start] != target) {\n            return { -1, -1 }; \/\/ nums \u4e2d\u6ca1\u6709 target\n        }\n        \/\/ \u5982\u679c start \u5b58\u5728\uff0c\u90a3\u4e48 end \u5fc5\u5b9a\u5b58\u5728\n        int end = lower_bound3(nums, target + 1) - 1;\n        return { start, end };\n    }\n\n    \n};\n<\/code><\/pre>\n<h3 id=\"\u5bfb\u627e\u4e24\u4e2a\u6b63\u5e8f\u6570\u7ec4\u7684\u4e2d\u4f4d\u6570\">\u5bfb\u627e\u4e24\u4e2a\u6b63\u5e8f\u6570\u7ec4\u7684\u4e2d\u4f4d\u6570<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-143\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e24\u4e2a\u5927\u5c0f\u5206\u522b\u4e3a <code>m<\/code> \u548c <code>n<\/code> \u7684\u6b63\u5e8f\uff08\u4ece\u5c0f\u5230\u5927\uff09\u6570\u7ec4 <code>nums1<\/code> \u548c <code>nums2<\/code>\u3002\u8bf7\u4f60\u627e\u51fa\u5e76\u8fd4\u56de\u8fd9\u4e24\u4e2a\u6b63\u5e8f\u6570\u7ec4\u7684 <strong>\u4e2d\u4f4d\u6570<\/strong> \u3002<\/p>\n<p>\u7b97\u6cd5\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u5e94\u8be5\u4e3a <code>O(log (m+n))<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-122\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u770b\u6ce8\u91ca\u5427 \u8fd9\u4e2a\u8fd8\u5f97\u6162\u6162\u7406\u89e3<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-143\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;iostream&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    double findMedianSortedArrays(vector&lt;int&gt;&amp; nums1, vector&lt;int&gt;&amp; nums2) {\n        int m = nums1.size();   \/\/ \u53d6\u539f\u59cb\u6570\u7ec4\u957f\u5ea6\n        int n = nums2.size();\n        nums1.emplace_back(INT_MAX);    \/\/ \u8ffd\u52a0\u54e8\u5175\u4f4d\n        nums2.emplace_back(INT_MAX);\n        int k = (m + n + 1) \/ 2;    \/\/ \u83b7\u53d6\u4e2d\u95f4\u6570\u662f\u7b2c\u51e0\u4e2a\u6570\uff08\u5076\u6570\u53d6\u524d\u4e00\u4e2a\u6570\uff09\n        int idx1 = 0;     \/\/ \u904d\u5386\u6307\u9488\uff0c\u6307\u5411\u5f53\u524d\u53d6\u5f97\u6570\u7ec4\u7684\u5143\u7d20\n        int idx2 = 0;\n        bool flag = false;  \/\/ \u6807\u8bb0\u4e2d\u95f4\u6570\u53d6\u7684\u662f\u5426\u4e3anums1\u7684\u5143\u7d20\n        while (true) {\n            \/\/ \u6570\u7ec41\u5143\u7d20\u5168\u90e8\u53d6\u5b8c\uff0c\u5269\u4e0b\u7684\u5143 \u7d20\u7531\u6570\u7ec42\u63d0\u4f9b\n            if (idx1 == m) {\n                \/\/ [idx2, ?]\u63d0\u4f9bk\u4e2a\u5143\u7d20\uff0c\u5373?-idx2+1=k =&gt; ? = idx2+k-1\n                idx2 += k - 1;\n                break;\n            }\n            \/\/ \u6570\u7ec42\u5143\u7d20\u5168\u90e8\u53d6\u5b8c\uff0c\u5269\u4e0b\u7684\u5143\u7d20\u7531\u6570\u7ec41\u63d0\u4f9b\n            if (idx2 == n) {\n                idx1 += k - 1;\n                flag = true;\n                break;\n            }\n            \/\/ \u4e3a\u4e86\u4f7f\u6307\u9488\u505c\u5728\u4e2d\u95f4\u6570\u7684\u4f4d\u7f6e\uff0c\u6700\u540e\u4e00\u4e2a\u6570\u5355\u72ec\u5904\u7406\n            if (k == 1) {\n                flag = nums1[idx1] &lt; nums2[idx2];   \/\/ \u6307\u9488\u65e0\u9700\u79fb\u52a8\uff0c\u53ea\u9700\u8981\u5224\u65ad\u53d6\u54ea\u4e2a\u6570\u7ec4\u7684\u5143\u7d20\n                break;\n            }\n            \/\/ \u6bcf\u6b21\u4e24\u4e2a\u6570\u7ec4\u5404\u51fak\/2\u7684\u5143\u7d20\uff0c\u7136\u540e\u53d6\u6570\u5b57\u66f4\u5c0f\u7684\u90a3\u4e00\u7ec4\n            int half = k \/ 2;\n            int mid1 = min(idx1 + half, m) - 1;     \/\/ [idx1, mid1] \u8303\u56f4\u5143\u7d20\uff0c\u786e\u4fddmid1\u4e0d\u8d8a\u754c\n            int mid2 = min(idx2 + half, n) - 1;\n            \/\/ mid1\u66f4\u5c0f\uff0c\u90a3\u4e48mid1\u4e00\u5b9a\u4e0d\u4f1a\u662f\u7b2ck\u4e2a\u6570\uff0c\u56e0\u6b64\u6dd8\u6c70[idx1, mid1]\u5f80\u540e\u627e\uff1b\u5426\u5219\u6dd8\u6c70[idx2, mid2]\u5f80\u540e\u627e\n            \/\/ k\u51cf\u5c11\u5bf9\u5e94\u533a\u95f4\u7684\u5143\u7d20\u4e2a\u6570 idx-mid + 1\n            if (nums1[mid1] &lt; nums2[mid2]) {\n                k -= mid1 - idx1 + 1;\n                idx1 = mid1 + 1;\n            }\n            else {\n                k -= mid2 - idx2 + 1;\n                idx2 = mid2 + 1;\n            }\n        }\n        \/\/ \u603b\u5143\u7d20\u4e2a\u6570\u4e3a\u5947\u6570\uff0c\u76f4\u63a5\u8fd4\u56de\u4e2d\u95f4\u6570\uff0c\u6839\u636eflag\u5224\u65ad\u4e2d\u95f4\u6570\u662f\u5728nums1\u8fd8\u662f\u5728nums2\n        if ((m + n) &amp; 1)return (flag ? nums1[idx1] : nums2[idx2]) \/ 1.0;\n        \/\/ \u603b\u5143\u7d20\u4e2a\u6570\u4e3a\u5076\u6570\uff0c\u4e0d\u4ec5\u8981\u53d6\u4e2d\u95f4\u6570\uff0c\u8fd8\u8981\u53d6\u4e2d\u95f4\u6570\u7684\u540e\u4e00\u4f4d\u53d6\u5e73\u5747\n        \/\/ \u6839\u636eflag\u5224\u65ad\u4e2d\u95f4\u6570\u662f\u5728nums1\u8fd8\u662f\u5728nums2\uff0c\u4e2d\u95f4\u6570\u7684\u4e0b\u4e00\u4e2a\u6570\u8981\u4e48\u662f\u4e2d\u95f4\u6570\u540c\u6570\u7ec4\u7684\u540e\u4e00\u4f4d\uff0c\u8981\u4e48\u662f\u53e6\u4e00\u4e2a\u6570\u7ec4\u7684\u5f53\u524d\u6307\u5411\u5143\u7d20\n        if (flag)return (nums1[idx1] + min(nums1[idx1 + 1], nums2[idx2])) \/ 2.0;\n        return (nums2[idx2] + min(nums2[idx2 + 1], nums1[idx1])) \/ 2.0;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums1 = [1,3], nums2 = [2]\n\u8f93\u51fa\uff1a2.00000\n\u89e3\u91ca\uff1a\u5408\u5e76\u6570\u7ec4 = [1,2,3] \uff0c\u4e2d\u4f4d\u6570 2\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums1 = [1,2], nums2 = [3,4]\n\u8f93\u51fa\uff1a2.50000\n\u89e3\u91ca\uff1a\u5408\u5e76\u6570\u7ec4 = [1,2,3,4] \uff0c\u4e2d\u4f4d\u6570 (2 + 3) \/ 2 = 2.5\n<\/code><\/pre>\n<h2 id=\"\u5806\u6392\u5e8f\">\u5806\u6392\u5e8f<\/h2>\n<h3 id=\"\u6570\u7ec4\u4e2d\u7684\u7b2ck\u4e2a\u6700\u5927\u5143\u7d20\">\u6570\u7ec4\u4e2d\u7684\u7b2cK\u4e2a\u6700\u5927\u5143\u7d20<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-144\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \u548c\u6574\u6570 <code>k<\/code>\uff0c\u8bf7\u8fd4\u56de\u6570\u7ec4\u4e2d\u7b2c <code>**k**<\/code> \u4e2a\u6700\u5927\u7684\u5143\u7d20\u3002<\/p>\n<p>\u8bf7\u6ce8\u610f\uff0c\u4f60\u9700\u8981\u627e\u7684\u662f\u6570\u7ec4\u6392\u5e8f\u540e\u7684\u7b2c <code>k<\/code> \u4e2a\u6700\u5927\u7684\u5143\u7d20\uff0c\u800c\u4e0d\u662f\u7b2c <code>k<\/code> \u4e2a\u4e0d\u540c\u7684\u5143\u7d20\u3002<\/p>\n<p>\u4f60\u5fc5\u987b\u8bbe\u8ba1\u5e76\u5b9e\u73b0\u65f6\u95f4\u590d\u6742\u5ea6\u4e3a <code>O(n)<\/code> \u7684\u7b97\u6cd5\u89e3\u51b3\u6b64\u95ee\u9898\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-123\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6211\u4eec\u53ef\u4ee5\u501f\u52a9\u4e00\u4e2a\u5c0f\u9876\u5806\u6765\u7ef4\u62a4\u5f53\u524d\u5806\u5185\u5143\u7d20\u7684\u6700\u5c0f\u503c\uff0c\u540c\u65f6\u4fdd\u8bc1\u5806\u7684\u5927\u5c0f\u4e3a k\uff1a<\/p>\n<p>\u904d\u5386\u6570\u7ec4\u5c06\u5143\u7d20\u5165\u5806\uff1b<br \/>\n\u5982\u679c\u5f53\u524d\u5806\u5185\u5143\u7d20\u8d85\u8fc7 k \u4e86\uff0c\u6211\u4eec\u5c31\u628a\u5806\u9876\u5143\u7d20\u53bb\u9664\uff0c\u5373\u53bb\u9664\u5f53\u524d\u7684\u6700\u5c0f\u503c\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-144\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;queue&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    int findKthLargest(vector&lt;int&gt;&amp; nums, int k) {\n        priority_queue&lt;int, vector&lt;int&gt;, greater&lt;int&gt;&gt; pq;\n\n        for (auto&amp; num : nums)\n        {\n            pq.emplace(num);\n            if (pq.size() &gt; k)\n            {\n                pq.pop();\n            }\n        }\n\n        return pq.top();\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: [3,2,1,5,6,4], k = 2\n\u8f93\u51fa: 5\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: [3,2,3,1,2,4,5,5,6], k = 4\n\u8f93\u51fa: 4\n<\/code><\/pre>\n<h3 id=\"ipo\">IPO<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-145\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u5047\u8bbe \u529b\u6263\uff08LeetCode\uff09\u5373\u5c06\u5f00\u59cb <strong>IPO<\/strong> \u3002\u4e3a\u4e86\u4ee5\u66f4\u9ad8\u7684\u4ef7\u683c\u5c06\u80a1\u7968\u5356\u7ed9\u98ce\u9669\u6295\u8d44\u516c\u53f8\uff0c\u529b\u6263 \u5e0c\u671b\u5728 IPO \u4e4b\u524d\u5f00\u5c55\u4e00\u4e9b\u9879\u76ee\u4ee5\u589e\u52a0\u5176\u8d44\u672c\u3002 \u7531\u4e8e\u8d44\u6e90\u6709\u9650\uff0c\u5b83\u53ea\u80fd\u5728 IPO \u4e4b\u524d\u5b8c\u6210\u6700\u591a <code>k<\/code> \u4e2a\u4e0d\u540c\u7684\u9879\u76ee\u3002\u5e2e\u52a9 \u529b\u6263 \u8bbe\u8ba1\u5b8c\u6210\u6700\u591a <code>k<\/code> \u4e2a\u4e0d\u540c\u9879\u76ee\u540e\u5f97\u5230\u6700\u5927\u603b\u8d44\u672c\u7684\u65b9\u5f0f\u3002<\/p>\n<p>\u7ed9\u4f60 <code>n<\/code> \u4e2a\u9879\u76ee\u3002\u5bf9\u4e8e\u6bcf\u4e2a\u9879\u76ee <code>i<\/code> \uff0c\u5b83\u90fd\u6709\u4e00\u4e2a\u7eaf\u5229\u6da6 <code>profits[i]<\/code> \uff0c\u548c\u542f\u52a8\u8be5\u9879\u76ee\u9700\u8981\u7684\u6700\u5c0f\u8d44\u672c <code>capital[i]<\/code> \u3002<\/p>\n<p>\u6700\u521d\uff0c\u4f60\u7684\u8d44\u672c\u4e3a <code>w<\/code> \u3002\u5f53\u4f60\u5b8c\u6210\u4e00\u4e2a\u9879\u76ee\u65f6\uff0c\u4f60\u5c06\u83b7\u5f97\u7eaf\u5229\u6da6\uff0c\u4e14\u5229\u6da6\u5c06\u88ab\u6dfb\u52a0\u5230\u4f60\u7684\u603b\u8d44\u672c\u4e2d\u3002<\/p>\n<p>\u603b\u800c\u8a00\u4e4b\uff0c\u4ece\u7ed9\u5b9a\u9879\u76ee\u4e2d\u9009\u62e9 <strong>\u6700\u591a<\/strong> <code>k<\/code> \u4e2a\u4e0d\u540c\u9879\u76ee\u7684\u5217\u8868\uff0c\u4ee5 <strong>\u6700\u5927\u5316\u6700\u7ec8\u8d44\u672c<\/strong> \uff0c\u5e76\u8f93\u51fa\u6700\u7ec8\u53ef\u83b7\u5f97\u7684\u6700\u591a\u8d44\u672c\u3002<\/p>\n<p>\u7b54\u6848\u4fdd\u8bc1\u5728 32 \u4f4d\u6709\u7b26\u53f7\u6574\u6570\u8303\u56f4\u5185\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-124\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-145\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;queue&gt;\n#include &lt;numeric&gt; \n\nusing namespace std;\n\nclass Solution {\npublic:\n    int findMaximizedCapital(int k, int w, vector&lt;int&gt;&amp; profits, vector&lt;int&gt;&amp; capital) {\n        \/\/ \u751f\u6210\u7d22\u5f15\u5e8f\u5217\n        int n = capital.size();\n        vector&lt;int&gt; indexes(n);\n        iota(indexes.begin(), indexes.end(), 0);\n        \/\/ \u6839\u636e\u8d44\u672c\u503c\u5bf9\u7d22\u5f15\u8fdb\u884c\u5347\u5e8f\u6392\u5e8f    \n        sort(indexes.begin(), indexes.end(), [&amp;](int i, int j) {\n            return capital[i] &lt; capital[j];\n            });\n        priority_queue&lt;int&gt; pq;     \/\/ \u7ef4\u62a4\u5806\u5185\u5229\u6da6\u503c\u7684\u5927\u9876\u5806\n        int i = 0;\n        while (k-- &gt; 0) {\n            \/\/ \u5c06\u542f\u52a8\u8d44\u672c\u5c0f\u4e8e\u7b49\u4e8e\u5f53\u524d\u8d44\u672c\u7684\u9879\u76ee\u7684\u5229\u6da6\u52a0\u5165\u5927\u9876\u5806\n            while (i &lt; n &amp;&amp; capital[indexes[i]] &lt;= w) {\n                pq.emplace(profits[indexes[i++]]);\n            }\n            if (pq.empty())break;     \/\/ \u6ca1\u6709\u53ef\u4ee5\u542f\u52a8\u7684\u9879\u76ee\uff0c\u540e\u9762\u542f\u52a8\u8d44\u672c\u66f4\u5927\u7684\u9879\u76ee\u4e5f\u65e0\u6cd5\u542f\u52a8\uff0c\u9000\u51fa\n            w += pq.top();       \/\/ \u9009\u62e9\u542f\u52a8\u8d44\u672c\u6ee1\u8db3\u6761\u4ef6\u7684\u9879\u76ee\u4e2d\u5229\u6da6\u6700\u5927\u7684\u90a3\u4e2a\uff0c\u66f4\u65b0w\n            pq.pop();\n        }\n        return w;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ak = 2, w = 0, profits = [1,2,3], capital = [0,1,1]\n\u8f93\u51fa\uff1a4\n\u89e3\u91ca\uff1a\n\u7531\u4e8e\u4f60\u7684\u521d\u59cb\u8d44\u672c\u4e3a 0\uff0c\u4f60\u4ec5\u53ef\u4ee5\u4ece 0 \u53f7\u9879\u76ee\u5f00\u59cb\u3002\n\u5728\u5b8c\u6210\u540e\uff0c\u4f60\u5c06\u83b7\u5f97 1 \u7684\u5229\u6da6\uff0c\u4f60\u7684\u603b\u8d44\u672c\u5c06\u53d8\u4e3a 1\u3002\n\u6b64\u65f6\u4f60\u53ef\u4ee5\u9009\u62e9\u5f00\u59cb 1 \u53f7\u6216 2 \u53f7\u9879\u76ee\u3002\n\u7531\u4e8e\u4f60\u6700\u591a\u53ef\u4ee5\u9009\u62e9\u4e24\u4e2a\u9879\u76ee\uff0c\u6240\u4ee5\u4f60\u9700\u8981\u5b8c\u6210 2 \u53f7\u9879\u76ee\u4ee5\u83b7\u5f97\u6700\u5927\u7684\u8d44\u672c\u3002\n\u56e0\u6b64\uff0c\u8f93\u51fa\u6700\u540e\u6700\u5927\u5316\u7684\u8d44\u672c\uff0c\u4e3a 0 + 1 + 3 = 4\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ak = 3, w = 0, profits = [1,2,3], capital = [0,1,2]\n\u8f93\u51fa\uff1a6\n<\/code><\/pre>\n<h3 id=\"\u67e5\u627e\u548c\u6700\u5c0f\u7684k\u5bf9\u6570\u5b57\">\u67e5\u627e\u548c\u6700\u5c0f\u7684K\u5bf9\u6570\u5b57<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-146\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e24\u4e2a\u4ee5 <strong>\u975e\u9012\u51cf\u987a\u5e8f\u6392\u5217<\/strong> \u7684\u6574\u6570\u6570\u7ec4 <code>nums1<\/code> \u548c <code>nums2<\/code> , \u4ee5\u53ca\u4e00\u4e2a\u6574\u6570 <code>k<\/code> \u3002<\/p>\n<p>\u5b9a\u4e49\u4e00\u5bf9\u503c <code>(u,v)<\/code>\uff0c\u5176\u4e2d\u7b2c\u4e00\u4e2a\u5143\u7d20\u6765\u81ea <code>nums1<\/code>\uff0c\u7b2c\u4e8c\u4e2a\u5143\u7d20\u6765\u81ea <code>nums2<\/code> \u3002<\/p>\n<p>\u8bf7\u627e\u5230\u548c\u6700\u5c0f\u7684 <code>k<\/code> \u4e2a\u6570\u5bf9 <code>(u1,v1)<\/code>, <code>(u2,v2)<\/code> &#8230; <code>(uk,vk)<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-125\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-146\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;queue&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; kSmallestPairs(vector&lt;int&gt;&amp; nums1, vector&lt;int&gt;&amp; nums2, int k) {\n        int n = nums1.size(), m = nums2.size();\n        vector&lt;vector&lt;int&gt;&gt; ans;\n        priority_queue&lt;tuple&lt;int, int, int&gt;&gt; pq;\n        for (int i = 0; i &lt; min(n, k); i++) { \/\/ \u81f3\u591a k \u4e2a\n            pq.emplace(-nums1[i] - nums2[0], i, 0); \/\/ \u53d6\u76f8\u53cd\u6570\u53d8\u6210\u5c0f\u9876\u5806\n        }\n        while (ans.size() &lt; k) {\n            auto [_, i, j] = pq.top();\n            pq.pop();\n            ans.push_back({ nums1[i], nums2[j] });\n            if (j + 1 &lt; m) {\n                pq.emplace(-nums1[i] - nums2[j + 1], i, j + 1);\n            }\n        }\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165: nums1 = [1,7,11], nums2 = [2,4,6], k = 3\n\u8f93\u51fa: [1,2],[1,4],[1,6]\n\u89e3\u91ca: \u8fd4\u56de\u5e8f\u5217\u4e2d\u7684\u524d 3 \u5bf9\u6570\uff1a\n     [1,2],[1,4],[1,6],[7,2],[7,4],[11,2],[7,6],[11,4],[11,6]\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2:<\/strong><\/p>\n<pre><code>\u8f93\u5165: nums1 = [1,1,2], nums2 = [1,2,3], k = 2\n\u8f93\u51fa: [1,1],[1,1]\n\u89e3\u91ca: \u8fd4\u56de\u5e8f\u5217\u4e2d\u7684\u524d 2 \u5bf9\u6570\uff1a\n     [1,1],[1,1],[1,2],[2,1],[1,2],[2,2],[1,3],[1,3],[2,3]\n<\/code><\/pre>\n<h3 id=\"\u6570\u636e\u6d41\u7684\u4e2d\u4f4d\u6570\">\u6570\u636e\u6d41\u7684\u4e2d\u4f4d\u6570<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-147\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p><strong>\u4e2d\u4f4d\u6570<\/strong>\u662f\u6709\u5e8f\u6574\u6570\u5217\u8868\u4e2d\u7684\u4e2d\u95f4\u503c\u3002\u5982\u679c\u5217\u8868\u7684\u5927\u5c0f\u662f\u5076\u6570\uff0c\u5219\u6ca1\u6709\u4e2d\u95f4\u503c\uff0c\u4e2d\u4f4d\u6570\u662f\u4e24\u4e2a\u4e2d\u95f4\u503c\u7684\u5e73\u5747\u503c\u3002<\/p>\n<ul>\n<li>\u4f8b\u5982 <code>arr = [2,3,4]<\/code> \u7684\u4e2d\u4f4d\u6570\u662f <code>3<\/code> \u3002<\/li>\n<li>\u4f8b\u5982 <code>arr = [2,3]<\/code> \u7684\u4e2d\u4f4d\u6570\u662f <code>(2 + 3) \/ 2 = 2.5<\/code> \u3002<\/li>\n<\/ul>\n<p>\u5b9e\u73b0 MedianFinder \u7c7b:<\/p>\n<ul>\n<li><code>MedianFinder()<\/code>\u521d\u59cb\u5316 <code>MedianFinder<\/code> \u5bf9\u8c61\u3002<\/li>\n<li><code>void addNum(int num)<\/code> \u5c06\u6570\u636e\u6d41\u4e2d\u7684\u6574\u6570 <code>num<\/code> \u6dfb\u52a0\u5230\u6570\u636e\u7ed3\u6784\u4e2d\u3002<\/li>\n<li><code>double findMedian()<\/code> \u8fd4\u56de\u5230\u76ee\u524d\u4e3a\u6b62\u6240\u6709\u5143\u7d20\u7684\u4e2d\u4f4d\u6570\u3002\u4e0e\u5b9e\u9645\u7b54\u6848\u76f8\u5dee <code>10-5<\/code> \u4ee5\u5185\u7684\u7b54\u6848\u5c06\u88ab\u63a5\u53d7\u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-126\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5efa\u7acb\u4e00\u4e2a <strong>\u5c0f\u9876\u5806<\/strong> <em>A<\/em> \u548c <strong>\u5927\u9876\u5806<\/strong> <em>B<\/em> \uff0c\u5404\u4fdd\u5b58\u5217\u8868\u7684\u4e00\u534a\u5143\u7d20\uff0c\u4e14\u89c4\u5b9a\uff1a<\/p>\n<ul>\n<li><em>A<\/em> \u4fdd\u5b58 <strong>\u8f83\u5927<\/strong> \u7684\u4e00\u534a\uff0c\u957f\u5ea6\u4e3a 2<em>N<\/em>\uff08 <em>N<\/em> \u4e3a\u5076\u6570\uff09\u6216 2<em>N<\/em>+1\uff08 <em>N<\/em> \u4e3a\u5947\u6570\uff09\u3002<\/li>\n<li><em>B<\/em> \u4fdd\u5b58 <strong>\u8f83\u5c0f<\/strong> \u7684\u4e00\u534a\uff0c\u957f\u5ea6\u4e3a 2<em>N<\/em>\uff08 <em>N<\/em> \u4e3a\u5076\u6570\uff09\u6216 2<em>N<\/em>\u22121\uff08 <em>N<\/em> \u4e3a\u5947\u6570\uff09\u3002<\/li>\n<\/ul>\n<p>\u51fd\u6570 addNum(num) \uff1a<\/p>\n<ol start=\"\">\n<li>\u5f53 m=n\uff08\u5373 N \u4e3a \u5076\u6570\uff09\uff1a\u9700\u5411 A \u6dfb\u52a0\u4e00\u4e2a\u5143\u7d20\u3002\u5b9e\u73b0\u65b9\u6cd5\uff1a\u5c06\u65b0\u5143\u7d20 num \u63d2\u5165\u81f3 B \uff0c\u518d\u5c06 B \u5806\u9876\u5143\u7d20\u63d2\u5165\u81f3 A \u3002<\/li>\n<li>\u5f53 <em>m<\/em>\\=<em>n<\/em>\uff08\u5373 <em>N<\/em> \u4e3a <strong>\u5947\u6570<\/strong>\uff09\uff1a\u9700\u5411 <em>B<\/em> \u6dfb\u52a0\u4e00\u4e2a\u5143\u7d20\u3002\u5b9e\u73b0\u65b9\u6cd5\uff1a\u5c06\u65b0\u5143\u7d20 <em>n<strong>u<\/strong>m<\/em> \u63d2\u5165\u81f3 <em>A<\/em> \uff0c\u518d\u5c06 <em>A<\/em> \u5806\u9876\u5143\u7d20\u63d2\u5165\u81f3 <em>B<\/em> \u3002<\/li>\n<\/ol>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-147\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;queue&gt;\n\nusing namespace std;\n\n\nclass MedianFinder {\npublic:\n    priority_queue&lt;int, vector&lt;int&gt;, greater&lt;int&gt;&gt; A; \/\/ \u5c0f\u9876\u5806\uff0c\u4fdd\u5b58\u8f83\u5927\u7684\u4e00\u534a\n    priority_queue&lt;int, vector&lt;int&gt;, less&lt;int&gt;&gt; B; \/\/ \u5927\u9876\u5806\uff0c\u4fdd\u5b58\u8f83\u5c0f\u7684\u4e00\u534a\n    MedianFinder() { }\n    void addNum(int num) {\n        if (A.size() != B.size()) {\n            A.push(num);\n            B.push(A.top());\n            A.pop();\n        }\n        else {\n            B.push(num);\n            A.push(B.top());\n            B.pop();\n        }\n    }\n    double findMedian() {\n        return A.size() != B.size() ? A.top() : (A.top() + B.top()) \/ 2.0;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\n[\"MedianFinder\", \"addNum\", \"addNum\", \"findMedian\", \"addNum\", \"findMedian\"]\n[[], [1], [2], [], [3], []]\n\u8f93\u51fa\n[null, null, null, 1.5, null, 2.0]\n\n\u89e3\u91ca\nMedianFinder medianFinder = new MedianFinder();\nmedianFinder.addNum(1);    \/\/ arr = [1]\nmedianFinder.addNum(2);    \/\/ arr = [1, 2]\nmedianFinder.findMedian(); \/\/ \u8fd4\u56de 1.5 ((1 + 2) \/ 2)\nmedianFinder.addNum(3);    \/\/ arr[1, 2, 3]\nmedianFinder.findMedian(); \/\/ return 2.0\n<\/code><\/pre>\n<h2 id=\"\u4f4d\u8fd0\u7b97-2\">\u4f4d\u8fd0\u7b97<\/h2>\n<h3 id=\"\u4e8c\u8fdb\u5236\u6c42\u548c\">\u4e8c\u8fdb\u5236\u6c42\u548c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-148\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e24\u4e2a\u4e8c\u8fdb\u5236\u5b57\u7b26\u4e32 <code>a<\/code> \u548c <code>b<\/code> \uff0c\u4ee5\u4e8c\u8fdb\u5236\u5b57\u7b26\u4e32\u7684\u5f62\u5f0f\u8fd4\u56de\u5b83\u4eec\u7684\u548c\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-127\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u7531\u4e8e\u8fd9\u9053\u9898\u6a21\u62df\u7684\u662f\u4e8c\u8fdb\u5236\u6570\u7684\u52a0\u6cd5\uff0c\u56e0\u6b64 s[i] \u548c add \u53ef\u4ee5\u91c7\u7528\u4f4d\u8fd0\u7b97\u5f97\u5230\u3002<\/p>\n<p>\u4f4d\u5f02\u6216\u53ef\u4ee5\u6a21\u62df\u65e0\u8fdb\u4f4d\u7684\u4e24\u4e2a\u4e8c\u8fdb\u5236\u52a0\u6cd5\uff0c\u56e0\u6b64 s[i] = a[i] ^ b[i] ^ add\uff1b<\/p>\n<p>a[i]\u3001b[i] \u548c add \u53ea\u8981\u81f3\u5c11\u4e24\u4e2a\u6570\u4e3a 1 \u5373\u53ef\u4ee5\u4ea7\u751f\u8fdb\u4f4d\u3002\u5224\u65ad\u4e24\u4e2a\u6570\u90fd\u4e3a 1 \u53ef\u4ee5\u901a\u8fc7\u4f4d\u4e0e\u64cd\u4f5c\u3002\u4e09\u4e2a\u6570\u81f3\u5c11\u4e24\u4e2a\u6570\u4e3a 1 \u53ef\u4ee5\u901a\u8fc7\u4f4d\u6216\u4e24\u4e24\u4e4b\u95f4\u7684\u4f4d\u4e0e\u5b9e\u73b0\u3002\u5373 add = (a[i] &amp; b[i]) | (a[i] &amp; add) | (b[i] &amp; add)<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-148\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;string&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    string addBinary(string a, string b) {\n        string sum;\n        int add = 0;\n\n        int i = a.size() - 1;\n        int j = b.size() - 1;\n\n        while (i &gt;= 0 || j &gt;= 0)\n        {\n            int aDigit = i == -1 ? 0 : a[i--] - '0';\n            int bDigit = j == -1 ? 0 : b[j--] - '0';\n\n            int sDigit = aDigit ^ bDigit ^ add;\n\n            add = (aDigit &amp; bDigit) | (aDigit &amp; add) | (bDigit &amp; add);  \/\/ \u4f4d\u8fd0\u7b97\u8ba1\u7b97\u5f53\u524d\u8fdb\u4f4d\u4f4d\n            sum += to_string(sDigit);   \/\/ \u66f4\u65b0\u5f53\u524d\u4f4d\n\n        }\n\n        if (add == 1)sum += to_string(1);    \/\/ \u5df2\u6709\u4f4d\u52a0\u5b8c\u540e\uff0c\u8fdb\u4f4d\u4f4d\u4e3a1\uff0c\u8bf4\u660e\u4ea7\u751f\u9ad8\u4f4d\n        reverse(sum.begin(), sum.end());    \/\/ \u9006\u5e8f\u53cd\u8f6c\n\n        return sum;\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165:a = \"11\", b = \"1\"\n\u8f93\u51fa\uff1a\"100\"\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aa = \"1010\", b = \"1011\"\n\u8f93\u51fa\uff1a\"10101\"\n<\/code><\/pre>\n<h3 id=\"\u98a0\u5012\u4e8c\u8fdb\u5236\u4f4d\">\u98a0\u5012\u4e8c\u8fdb\u5236\u4f4d<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-149\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u98a0\u5012\u7ed9\u5b9a\u7684 32 \u4f4d\u65e0\u7b26\u53f7\u6574\u6570\u7684\u4e8c\u8fdb\u5236\u4f4d\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-128\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u83b7\u53d6\u6bcf\u4e00\u4f4d <code>i<\/code><\/p>\n<ol start=\"\">\n<li>\u4f4d\u4e0e1\uff1b\u3010\u83b7\u53d6\u5230\u6700\u4f4e\u4f4d\u7684\u503c\u3011<\/li>\n<li>\u53f3\u79fb\u4e00\u4f4d\uff1b\u3010\u53bb\u6389\u6700\u4f4e\u4f4d\uff0c\u5c06\u6b21\u4f4e\u4f4d\u79fb\u5230\u6700\u4f4e\u4f4d\u3011<\/li>\n<\/ol>\n<p>\u66f4\u65b0 <code>31-i<\/code> \u4f4d<\/p>\n<ol start=\"\">\n<li>\u5c06\u4e0a\u4e00\u6b65\u5f97\u5230\u7684\u4f4d\u5de6\u79fb\u5230 <code>31 - i<\/code>\uff1b<\/li>\n<li>\u4f4d\u6216\u7ed3\u679c <code>res<\/code>\u3002<\/li>\n<\/ol>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-149\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;cstdint&gt;\n\nclass Solution {\npublic:\n    uint32_t reverseBits(uint32_t n) {\n        int idx = 0;        \/\/ \u4f4d\u7d22\u5f15\n        uint32_t res = 0;   \/\/ \u53cd\u8f6c\u7ed3\u679c\uff0c\u521d\u59cb\u4e3a0\u8868\u793a\u6240\u6709\u4f4d\u90fd\u4e3a0\n        \/\/ \u5faa\u73af\u5904\u7406\u5230\u6700\u9ad8\u4f4d1\n        while (n &gt; 0) {\n            int digit = n &amp; 1;  \/\/ \u83b7\u53d6\u5f53\u524d\u6700\u4f4e\u4f4d\n            n &gt;&gt;= 1;            \/\/ \u5c06\u6700\u4f4e\u4f4d\u53f3\u79fb\u6389\n            res |= (digit &lt;&lt; (31 - idx++)); \/\/ \u5c06\u8fd9\u4e2a\u6700\u4f4e\u4f4d\u53cd\u8f6c\u5230\u5b83\u5b9e\u9645\u4f4d\u7f6e\u4e0a\u53bb\n        }\n        return res;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u63d0\u793a\uff1a<\/strong><\/p>\n<ul>\n<li>\u8bf7\u6ce8\u610f\uff0c\u5728\u67d0\u4e9b\u8bed\u8a00\uff08\u5982 Java\uff09\u4e2d\uff0c\u6ca1\u6709\u65e0\u7b26\u53f7\u6574\u6570\u7c7b\u578b\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u8f93\u5165\u548c\u8f93\u51fa\u90fd\u5c06\u88ab\u6307\u5b9a\u4e3a\u6709\u7b26\u53f7\u6574\u6570\u7c7b\u578b\uff0c\u5e76\u4e14\u4e0d\u5e94\u5f71\u54cd\u60a8\u7684\u5b9e\u73b0\uff0c\u56e0\u4e3a\u65e0\u8bba\u6574\u6570\u662f\u6709\u7b26\u53f7\u7684\u8fd8\u662f\u65e0\u7b26\u53f7\u7684\uff0c\u5176\u5185\u90e8\u7684\u4e8c\u8fdb\u5236\u8868\u793a\u5f62\u5f0f\u90fd\u662f\u76f8\u540c\u7684\u3002<\/li>\n<li>\u5728 Java \u4e2d\uff0c\u7f16\u8bd1\u5668\u4f7f\u7528<a href=\"https:\/\/baike.baidu.com\/item\/\u4e8c\u8fdb\u5236\u8865\u7801\/5295284\">\u4e8c\u8fdb\u5236\u8865\u7801<\/a>\u8bb0\u6cd5\u6765\u8868\u793a\u6709\u7b26\u53f7\u6574\u6570\u3002\u56e0\u6b64\uff0c\u5728 <strong>\u793a\u4f8b 2<\/strong> \u4e2d\uff0c\u8f93\u5165\u8868\u793a\u6709\u7b26\u53f7\u6574\u6570 <code>-3<\/code>\uff0c\u8f93\u51fa\u8868\u793a\u6709\u7b26\u53f7\u6574\u6570 <code>-1073741825<\/code>\u3002<\/li>\n<\/ul>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 00000010100101000001111010011100\n\u8f93\u51fa\uff1a964176192 (00111001011110000010100101000000)\n\u89e3\u91ca\uff1a\u8f93\u5165\u7684\u4e8c\u8fdb\u5236\u4e32 00000010100101000001111010011100 \u8868\u793a\u65e0\u7b26\u53f7\u6574\u6570 43261596\uff0c\n     \u56e0\u6b64\u8fd4\u56de 964176192\uff0c\u5176\u4e8c\u8fdb\u5236\u8868\u793a\u5f62\u5f0f\u4e3a 00111001011110000010100101000000\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 11111111111111111111111111111101\n\u8f93\u51fa\uff1a3221225471 (10111111111111111111111111111111)\n\u89e3\u91ca\uff1a\u8f93\u5165\u7684\u4e8c\u8fdb\u5236\u4e32 11111111111111111111111111111101 \u8868\u793a\u65e0\u7b26\u53f7\u6574\u6570 4294967293\uff0c\n     \u56e0\u6b64\u8fd4\u56de 3221225471 \u5176\u4e8c\u8fdb\u5236\u8868\u793a\u5f62\u5f0f\u4e3a 10111111111111111111111111111111 \u3002\n<\/code><\/pre>\n<h3 id=\"\u4f4d1\u7684\u4e2a\u6570\">\u4f4d1\u7684\u4e2a\u6570<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-150\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7f16\u5199\u4e00\u4e2a\u51fd\u6570\uff0c\u83b7\u53d6\u4e00\u4e2a\u6b63\u6574\u6570\u7684\u4e8c\u8fdb\u5236\u5f62\u5f0f\u5e76\u8fd4\u56de\u5176\u4e8c\u8fdb\u5236\u8868\u8fbe\u5f0f\u4e2d \u8bbe\u7f6e\u4f4d \u7684\u4e2a\u6570\uff08\u4e5f\u88ab\u79f0\u4e3a<a href=\"https:\/\/baike.baidu.com\/item\/\u6c49\u660e\u91cd\u91cf\">\u6c49\u660e\u91cd\u91cf<\/a>\uff09\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-129\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4f4d\u8fd0\u7b97\uff1a<\/p>\n<ul>\n<li>\u901a\u8fc7 <code>&amp; 1<\/code>\uff1a\u83b7\u53d6\u6700\u4f4e\u4f4d\u7684\u503c\uff1b<\/li>\n<li>\u901a\u8fc7 <code>&gt;&gt; 1<\/code>\uff1a\u6bcf\u6b21\u53f3\u79fb\u4e00\u4f4d\u6765\u66f4\u65b0\u6700\u4f4e\u4f4d<\/li>\n<\/ul>\n<p>\u8fd9\u6837\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u4e3a <code>O(C)<\/code>\uff0c<code>C<\/code> \u4e3a\u6570\u5b57\u7684\u6570\u636e\u7c7b\u578b\u7684\u4f4d\u6570\u3002<\/p>\n<p>\u4f4d\u8fd0\u7b97\u4f18\u5316<br \/>\n\u66b4\u529b\u679a\u4e3e\u662f\u56fa\u5b9a\u8981\u679a\u4e3e\u6240\u6709\u4f4d\u7684\uff0c\u6709\u6ca1\u6709\u4ec0\u4e48\u529e\u6cd5\u52a0\u5feb\u8fd9\u4e2a\u8fdb\u7a0b\u5462\uff1f<\/p>\n<p>\u6211\u4eec\u53ef\u4ee5\u7528 n = n &amp; (n &#8211; 1) \u4ee3\u66ff n = n &gt;&gt; 1 \u8fdb\u884c n \u7684\u66f4\u65b0\u3002<\/p>\n<p>\u6bcf\u4e00\u6b21 <code>n = n &amp; (n - 1)<\/code> \u90fd\u4f1a<strong>\u628a\u5f53\u524d <code>n<\/code> \u7684\u6700\u4f4e\u4f4d <code>1<\/code> \u79fb\u9664\u6389<\/strong>\uff0c\u76f4\u5230\u6700\u540e\u6240\u6709 <code>1<\/code> \u90fd\u88ab\u6d88\u9664\uff0c<code>n<\/code> \u53d8\u4e3a <code>0<\/code>\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-150\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">\nclass Solution {\npublic:\n    int hammingWeight(int n) {\n        int c = 0;\n\n        while (n)\n        {\n            n = n &amp; (n - 1);\n            c++;\n        }\n\n        return c;\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 11\n\u8f93\u51fa\uff1a3\n\u89e3\u91ca\uff1a\u8f93\u5165\u7684\u4e8c\u8fdb\u5236\u4e32 1011 \u4e2d\uff0c\u5171\u6709 3 \u4e2a\u8bbe\u7f6e\u4f4d\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 128\n\u8f93\u51fa\uff1a1\n\u89e3\u91ca\uff1a\u8f93\u5165\u7684\u4e8c\u8fdb\u5236\u4e32 10000000 \u4e2d\uff0c\u5171\u6709 1 \u4e2a\u8bbe\u7f6e\u4f4d\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 2147483645\n\u8f93\u51fa\uff1a30\n\u89e3\u91ca\uff1a\u8f93\u5165\u7684\u4e8c\u8fdb\u5236\u4e32 11111111111111111111111111111101 \u4e2d\uff0c\u5171\u6709 30 \u4e2a\u8bbe\u7f6e\u4f4d\u3002\n<\/code><\/pre>\n<h3 id=\"\u53ea\u51fa\u73b0\u4e00\u6b21\u7684\u6570\u5b57\">\u53ea\u51fa\u73b0\u4e00\u6b21\u7684\u6570\u5b57<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-151\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a <strong>\u975e\u7a7a<\/strong> \u6574\u6570\u6570\u7ec4 <code>nums<\/code> \uff0c\u9664\u4e86\u67d0\u4e2a\u5143\u7d20\u53ea\u51fa\u73b0\u4e00\u6b21\u4ee5\u5916\uff0c\u5176\u4f59\u6bcf\u4e2a\u5143\u7d20\u5747\u51fa\u73b0\u4e24\u6b21\u3002\u627e\u51fa\u90a3\u4e2a\u53ea\u51fa\u73b0\u4e86\u4e00\u6b21\u7684\u5143\u7d20\u3002<\/p>\n<p>\u4f60\u5fc5\u987b\u8bbe\u8ba1\u5e76\u5b9e\u73b0\u7ebf\u6027\u65f6\u95f4\u590d\u6742\u5ea6\u7684\u7b97\u6cd5\u6765\u89e3\u51b3\u6b64\u95ee\u9898\uff0c\u4e14\u8be5\u7b97\u6cd5\u53ea\u4f7f\u7528\u5e38\u91cf\u989d\u5916\u7a7a\u95f4\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-130\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5229\u7528\u5f02\u6216\u8fd0\u7b97 <em>a<\/em>\u2295<em>a<\/em>=0 \u7684\u6027\u8d28\uff0c\u6211\u4eec\u53ef\u4ee5\u7528\u5f02\u6216\u6765\u300c\u6d88\u9664\u300d\u6240\u6709\u51fa\u73b0\u4e86\u4e24\u6b21\u7684\u5143\u7d20\uff0c\u6700\u540e\u5269\u4e0b\u7684\u4e00\u5b9a\u662f\u53ea\u51fa\u73b0\u4e00\u6b21\u7684\u5143\u7d20\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-151\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int singleNumber(vector&lt;int&gt;&amp; nums) {\n        int ans = 0;\n        for (int x : nums)\n        {\n            ans ^= x;\n        }\n\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1 \uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [2,2,1]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2 \uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [4,1,2,1,2]\n\u8f93\u51fa\uff1a4\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3 \uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [1]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<h3 id=\"\u53ea\u51fa\u73b0\u4e00\u6b21\u7684\u6570\u5b57\u2171\">\u53ea\u51fa\u73b0\u4e00\u6b21\u7684\u6570\u5b57\u2161<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-152\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \uff0c\u9664\u67d0\u4e2a\u5143\u7d20\u4ec5\u51fa\u73b0 <strong>\u4e00\u6b21<\/strong> \u5916\uff0c\u5176\u4f59\u6bcf\u4e2a\u5143\u7d20\u90fd\u6070\u51fa\u73b0 <strong>\u4e09\u6b21 \u3002<\/strong>\u8bf7\u4f60\u627e\u51fa\u5e76\u8fd4\u56de\u90a3\u4e2a\u53ea\u51fa\u73b0\u4e86\u4e00\u6b21\u7684\u5143\u7d20\u3002<\/p>\n<p>\u4f60\u5fc5\u987b\u8bbe\u8ba1\u5e76\u5b9e\u73b0\u7ebf\u6027\u65f6\u95f4\u590d\u6742\u5ea6\u7684\u7b97\u6cd5\u4e14\u4f7f\u7528\u5e38\u6570\u7ea7\u7a7a\u95f4\u6765\u89e3\u51b3\u6b64\u95ee\u9898\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-131\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><a href=\"https:\/\/leetcode.cn\/problems\/single-number-ii\/solutions\/2482832\/dai-ni-yi-bu-bu-tui-dao-chu-wei-yun-suan-wnwy\/?envType=study-plan-v2&amp;envId=top-interview-150\">137. \u53ea\u51fa\u73b0\u4e00\u6b21\u7684\u6570\u5b57 II &#8211; \u529b\u6263\uff08LeetCode\uff09<\/a><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-152\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int singleNumber(vector&lt;int&gt;&amp; nums) {\n        int a = 0, b = 0;\n        for (int x : nums) {\n            b = (b ^ x) &amp; ~a;\n            a = (a ^ x) &amp; ~b;\n        }\n        return b;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [2,2,3,2]\n\u8f93\u51fa\uff1a3\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [0,1,0,1,0,1,99]\n\u8f93\u51fa\uff1a99\n<\/code><\/pre>\n<h3 id=\"\u6570\u5b57\u8303\u56f4\u6309\u4f4d\u4e0e\">\u6570\u5b57\u8303\u56f4\u6309\u4f4d\u4e0e<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-153\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e24\u4e2a\u6574\u6570 <code>left<\/code> \u548c <code>right<\/code> \uff0c\u8868\u793a\u533a\u95f4 <code>[left, right]<\/code> \uff0c\u8fd4\u56de\u6b64\u533a\u95f4\u5185\u6240\u6709\u6570\u5b57 <strong>\u6309\u4f4d\u4e0e<\/strong> \u7684\u7ed3\u679c\uff08\u5305\u542b <code>left<\/code> \u3001<code>right<\/code> \u7aef\u70b9\uff09\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-132\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u800c\u6211\u4eec\u8981\u627e\u8303\u56f4 <code>[left, right]<\/code> \u5143\u7d20\u7684\u4f4d\u516c\u5171\u524d\u7f00\uff0c\u7b49\u4ef7\u4e8e\u627e <code>left<\/code> \u548c <code>right<\/code> \u7684\u516c\u5171\u524d\u7f00\uff1b<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-153\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    int rangeBitwiseAnd(int left, int right) {\n\n        int cnt = 0;\n\n        while (left != right)\n        {\n            cnt++;\n            left &gt;&gt;= 1;\n            right &gt;&gt;= 1;\n        }\n\n\n        return left &lt;&lt; cnt;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aleft = 5, right = 7\n\u8f93\u51fa\uff1a4\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aleft = 0, right = 0\n\u8f93\u51fa\uff1a0\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aleft = 1, right = 2147483647\n\u8f93\u51fa\uff1a0\n<\/code><\/pre>\n<h3 id=\"\u56de\u6587\u6570\">\u56de\u6587\u6570<\/h3>\n<h4 id=\"\u9898\u76ee\u5206\u6790-133\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570 <code>x<\/code> \uff0c\u5982\u679c <code>x<\/code> \u662f\u4e00\u4e2a\u56de\u6587\u6574\u6570\uff0c\u8fd4\u56de <code>true<\/code> \uff1b\u5426\u5219\uff0c\u8fd4\u56de <code>false<\/code> \u3002<\/p>\n<p>\u56de\u6587\u6570<\/p>\n<p>\u662f\u6307\u6b63\u5e8f\uff08\u4ece\u5de6\u5411\u53f3\uff09\u548c\u5012\u5e8f\uff08\u4ece\u53f3\u5411\u5de6\uff09\u8bfb\u90fd\u662f\u4e00\u6837\u7684\u6574\u6570\u3002<\/p>\n<ul>\n<li>\u4f8b\u5982\uff0c<code>121<\/code> \u662f\u56de\u6587\uff0c\u800c <code>123<\/code> \u4e0d\u662f\u3002<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-134\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-154\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    bool isPalindrome(int x) {\n        \/\/ \u7279\u6b8a\u60c5\u51b5\uff1a\n        \/\/ \u5982\u4e0a\u6240\u8ff0\uff0c\u5f53 x &lt; 0 \u65f6\uff0cx \u4e0d\u662f\u56de\u6587\u6570\u3002\n        \/\/ \u540c\u6837\u5730\uff0c\u5982\u679c\u6570\u5b57\u7684\u6700\u540e\u4e00\u4f4d\u662f 0\uff0c\u4e3a\u4e86\u4f7f\u8be5\u6570\u5b57\u4e3a\u56de\u6587\uff0c\n        \/\/ \u5219\u5176\u7b2c\u4e00\u4f4d\u6570\u5b57\u4e5f\u5e94\u8be5\u662f 0\n        \/\/ \u53ea\u6709 0 \u6ee1\u8db3\u8fd9\u4e00\u5c5e\u6027\n        if (x &lt; 0 || (x % 10 == 0 &amp;&amp; x != 0)) {\n            return false;\n        }\n\n        int revertedNumber = 0;\n        while (x &gt; revertedNumber) {\n            revertedNumber = revertedNumber * 10 + x % 10;\n            x \/= 10;\n        }\n\n        \/\/ \u5f53\u6570\u5b57\u957f\u5ea6\u4e3a\u5947\u6570\u65f6\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7 revertedNumber\/10 \u53bb\u9664\u5904\u4e8e\u4e2d\u4f4d\u7684\u6570\u5b57\u3002\n        \/\/ \u4f8b\u5982\uff0c\u5f53\u8f93\u5165\u4e3a 12321 \u65f6\uff0c\u5728 while \u5faa\u73af\u7684\u672b\u5c3e\u6211\u4eec\u53ef\u4ee5\u5f97\u5230 x = 12\uff0crevertedNumber = 123\uff0c\n        \/\/ \u7531\u4e8e\u5904\u4e8e\u4e2d\u4f4d\u7684\u6570\u5b57\u4e0d\u5f71\u54cd\u56de\u6587\uff08\u5b83\u603b\u662f\u4e0e\u81ea\u5df1\u76f8\u7b49\uff09\uff0c\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u7b80\u5355\u5730\u5c06\u5176\u53bb\u9664\u3002\n        return x == revertedNumber || x == revertedNumber \/ 10;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ax = 121\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ax = -121\n\u8f93\u51fa\uff1afalse\n\u89e3\u91ca\uff1a\u4ece\u5de6\u5411\u53f3\u8bfb, \u4e3a -121 \u3002 \u4ece\u53f3\u5411\u5de6\u8bfb, \u4e3a 121- \u3002\u56e0\u6b64\u5b83\u4e0d\u662f\u4e00\u4e2a\u56de\u6587\u6570\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ax = 10\n\u8f93\u51fa\uff1afalse\n\u89e3\u91ca\uff1a\u4ece\u53f3\u5411\u5de6\u8bfb, \u4e3a 01 \u3002\u56e0\u6b64\u5b83\u4e0d\u662f\u4e00\u4e2a\u56de\u6587\u6570\u3002\n<\/code><\/pre>\n<h3 id=\"\u52a0\u4e00\">\u52a0\u4e00<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-154\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u7531 <strong>\u6574\u6570<\/strong> \u7ec4\u6210\u7684 <strong>\u975e\u7a7a<\/strong> \u6570\u7ec4\u6240\u8868\u793a\u7684\u975e\u8d1f\u6574\u6570\uff0c\u5728\u8be5\u6570\u7684\u57fa\u7840\u4e0a\u52a0\u4e00\u3002<\/p>\n<p>\u6700\u9ad8\u4f4d\u6570\u5b57\u5b58\u653e\u5728\u6570\u7ec4\u7684\u9996\u4f4d\uff0c \u6570\u7ec4\u4e2d\u6bcf\u4e2a\u5143\u7d20\u53ea\u5b58\u50a8<strong>\u5355\u4e2a<\/strong>\u6570\u5b57\u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u5047\u8bbe\u9664\u4e86\u6574\u6570 0 \u4e4b\u5916\uff0c\u8fd9\u4e2a\u6574\u6570\u4e0d\u4f1a\u4ee5\u96f6\u5f00\u5934\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-135\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-155\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    vector&lt;int&gt; plusOne(vector&lt;int&gt;&amp; digits) {\n        int n = digits.size();\n        vector&lt;int&gt; res(digits.begin(), digits.end());  \/\/ \u62f7\u8d1d\u4e00\u4e2adigits\n        res[n - 1]++;   \/\/ \u6700\u540e\u4e00\u4f4d+1\n        int add = 0;    \/\/ \u8fdb\u4f4d\u4f4d\n        for (int i = n - 1; i &gt;= 0; i--) {\n            res[i] += add;      \/\/ \u9664\u4e86\u6700\u540e\u4e00\u4f4d\uff0c\u5176\u4ed6\u6bcf\u4e00\u4f4d\u90fd\u9700\u8981\u7d2f\u52a0\u8fdb\u4f4d\u4f4d\uff1b\u521d\u59cbadd=0\uff0c\u6700\u540e\u4e00\u4f4d\u7d2f\u52a0\u8fdb\u4f4d\u65e0\u5f71\u54cd\n            add = res[i] \/ 10;  \/\/ \u6839\u636e\u5f53\u524d\u4f4d\u7684\u503c\uff0c\u5224\u65ad\u662f\u5426\u4ea7\u751f\u8fdb\u4f4d\n            res[i] %= 10;       \/\/ \u53d6\u6a21\u503c\n            if (add == 0)return res; \/\/ \u5982\u679c\u6ca1\u6709\u4ea7\u751f\u8fdb\u4f4d\uff0c\u5269\u4e0b\u7684\u4f4d\u4e0d\u4f1a\u518d\u53d8\u5316\uff0c\u76f4\u63a5\u8fd4\u56de\n        }\n        \/\/ \u6700\u9ad8\u4f4d\u4ea7\u751f\u8fdb\u4f4d\uff0c\u8fd9\u4e2a\u6570\u5b57\u4e00\u5b9a\u662f9...9 + 1\uff0c\u7ed3\u679c\u5c31\u662f10...0\n        \/\/ \u591a\u4ea7\u751f\u4e86\u4e00\u4f4d\u9ad8\u4f4d1\uff0c\u5176\u4ed6\u4f4d\u90fd\u4e3a0\n        vector&lt;int&gt; res_(n + 1);\n        res_[0] = 1;\n        return res_;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1adigits = [1,2,3]\n\u8f93\u51fa\uff1a[1,2,4]\n\u89e3\u91ca\uff1a\u8f93\u5165\u6570\u7ec4\u8868\u793a\u6570\u5b57 123\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1adigits = [4,3,2,1]\n\u8f93\u51fa\uff1a[4,3,2,2]\n\u89e3\u91ca\uff1a\u8f93\u5165\u6570\u7ec4\u8868\u793a\u6570\u5b57 4321\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1adigits = [0]\n\u8f93\u51fa\uff1a[1]\n<\/code><\/pre>\n<h3 id=\"\u9636\u4e58\u540e\u7684\u96f6\">\u9636\u4e58\u540e\u7684\u96f6<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-155\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u6574\u6570 <code>n<\/code> \uff0c\u8fd4\u56de <code>n!<\/code> \u7ed3\u679c\u4e2d\u5c3e\u968f\u96f6\u7684\u6570\u91cf\u3002<\/p>\n<p>\u63d0\u793a <code>n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1<\/code><\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-136\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u8fd9\u9053\u9898\u8981\u7edf\u8ba1\u6574\u6570 n \u9636\u4e58\u7684\u7ed3\u679c\u4e2d\u6709\u591a\u5c11\u4e2a\u5c3e\u90e8\u7684 0\u3002\u4e00\u4e2a\u6570\u5982\u679c\u6709\u5c3e\u968f\u7684 0\uff0c\u90a3\u4e00\u5b9a\u53ef\u4ee5\u8868\u793a\u6210 m x 10^n\uff0c\u5e76\u4e14 n \u5c31\u662f\u5c3e\u968f 0 \u7684\u4e2a\u6570\uff0c\u4e5f\u662f\u8fd9\u4e2a\u6570\u53ef\u4ee5\u62c6\u5206\u51fa\u6765\u7684\u56e0\u5b50 10 \u7684\u4e2a\u6570\u3002<\/p>\n<p>\u56e0\u6b64\u6211\u4eec\u5c31\u8981\u770b n \u9636\u4e58\uff0c\u5373 [1,n] \u8fd9 n \u4e2a\u6570\u76f8\u4e58\uff0c\u80fd\u591f\u62c6\u5206\u51fa\u591a\u5c11\u4e2a\u56e0\u5b50 10\u3002\u800c\u56e0\u5b50 10 = 2 x 5\uff0c\u56e0\u6b64\u5c31\u662f\u7edf\u8ba1\u6709\u591a\u5c11\u5bf9\u56e0\u5b50 2 \u548c 5\u3002<\/p>\n<p>\u800c\u5728\u4e00\u6bb5\u8fde\u7eed\u7684\u6570\u5f53\u4e2d\uff0c2 \u7684\u500d\u6570\u4e00\u5b9a\u6bd4 5 \u7684\u500d\u6570\u591a\uff0c\u5373\u56e0\u5b50 2 \u4e00\u5b9a\u6bd4\u56e0\u5b50 5 \u591a\u3002\u56e0\u6b64\u6211\u4eec\u5b9e\u9645\u8981\u7edf\u8ba1\u7684\u5c31\u662f \u56e0\u5b505\u7684\u4e2a\u6570\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-156\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    int trailingZeroes(int n) {\n        int res = 0;    \/\/ \u7edf\u8ba1[1, n]\u7684\u56e0\u5b505\u7684\u4e2a\u6570\n        \/\/ \u53ea\u8981n\u5927\u4e8e\u7b49\u4e8e5\uff0c\u5c31\u4e00\u5b9a\u5305\u542b5\u7684\u500d\u6570\n        while (n &gt;= 5) {\n            n \/= 5;     \/\/ \u6bcf\u6b21\u5faa\u73af\uff0cn \/ 5 \u662f\u5728\u7edf\u8ba1n\u4e2d\u6709\u591a\u5c115^i\u7684\u500d\u6570\uff0ci\u662f\u5faa\u73af\u6b21\u6570\n            res += n;   \/\/ \u8fd9\u4e9b\u500d\u6570\u90fd\u53ef\u4ee5\u5206\u89e3\u4e00\u4e2a\u56e0\u5b505\n        }\n        return res;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 3\n\u8f93\u51fa\uff1a0\n\u89e3\u91ca\uff1a3! = 6 \uff0c\u4e0d\u542b\u5c3e\u968f 0\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 5\n\u8f93\u51fa\uff1a1\n\u89e3\u91ca\uff1a5! = 120 \uff0c\u6709\u4e00\u4e2a\u5c3e\u968f 0\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 0\n\u8f93\u51fa\uff1a0\n<\/code><\/pre>\n<h3 id=\"x\u7684\u5e73\u65b9\u6839\">x\u7684\u5e73\u65b9\u6839<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-156\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u975e\u8d1f\u6574\u6570 <code>x<\/code> \uff0c\u8ba1\u7b97\u5e76\u8fd4\u56de <code>x<\/code> \u7684 <strong>\u7b97\u672f\u5e73\u65b9\u6839<\/strong> \u3002<\/p>\n<p>\u7531\u4e8e\u8fd4\u56de\u7c7b\u578b\u662f\u6574\u6570\uff0c\u7ed3\u679c\u53ea\u4fdd\u7559 <strong>\u6574\u6570\u90e8\u5206<\/strong> \uff0c\u5c0f\u6570\u90e8\u5206\u5c06\u88ab <strong>\u820d\u53bb \u3002<\/strong><\/p>\n<p><strong>\u6ce8\u610f\uff1a<\/strong>\u4e0d\u5141\u8bb8\u4f7f\u7528\u4efb\u4f55\u5185\u7f6e\u6307\u6570\u51fd\u6570\u548c\u7b97\u7b26\uff0c\u4f8b\u5982 <code>pow(x, 0.5)<\/code> \u6216\u8005 <code>x ** 0.5<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-137\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u6211\u4eec\u8981\u641c\u7d22 i \u80af\u5b9a\u5c5e\u4e8e [1, x + 1)\uff0c\u5e76\u4e14\u6ee1\u8db3\u968f\u7740 i \u589e\u5927\uff0c\u641c\u7d22\u503c i ^ 2 \u4e5f\u662f\u589e\u5927\u7684\u3002\u56e0\u6b64\u6211\u4eec\u5c31\u53d8\u6210\u4e86\u5728\u5143\u7d20 [1, x+1) \u8fd9\u4e2a\u6709\u5e8f\u533a\u95f4\u5185\uff0c\u627e\u5230\u6700\u540e\u4e00\u4e2a\u6ee1\u8db3 i ^ 2 &lt;= x \u7684\u503c\u3002<\/p>\n<p>\u800c\u6211\u4eec\u6700\u540e\u53d6\u5230\u7684\u503c\u662f \u5de6\u8fb9\u754c-1\uff08\u56e0\u4e3a\u662f\u95ed\u533a\u95f4\uff09<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-157\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    int mySqrt(int x) {\n        \/\/ 1\u548c0\u7684\u7b97\u672f\u5e73\u65b9\u6839\u4e3a\u5176\u81ea\u8eab\n        if(x &lt;= 1)return x;\n        \/\/ \u5bf9\u4e8e\u5927\u4e8e1\u7684\u6570x\uff0c\u5176\u5411\u4e0b\u53d6\u6574\u7684\u7b97\u672f\u5e73\u65b9\u6839\u90fd\u5c0f\u4e8e\u7b49\u4e8ex\/2\n        \/\/ \u6211\u4eec\u7684\u641c\u7d22\u533a\u95f4\u662f\u5de6\u95ed\u53f3\u5f00\uff0c\u56e0\u6b64\u53f3\u8fb9\u754c\u53d6\u5230x\/2+1\n        int left = 0;\n        int right = x \/ 2 + 1;\n        while(left &lt; right){\n            int mid = left + ((right - left) &gt;&gt; 1);\n            if((long long)mid * mid &lt;= x){\n                \/\/ \u627e\u5230\u4e00\u4e2a\u6ee1\u8db3\u7b97\u6570\u5e73\u65b9\u6839\u7684\u6570\uff0c\u6682\u5b58ans = mid\n                \/\/ \u5411\u53f3\u67e5\u627e\u6ee1\u8db3\u6761\u4ef6\u7684\u66f4\u5927\uff0cleft = mid + 1\u3002\u56e0\u6b64ans = left - 1\uff0c\u6211\u4eec\u53ef\u4ee5\u4e0d\u7528\u6682\u5b58ans\n                left = mid + 1;\n            }else{\n                right = mid;    \/\/ \u6570\u503c\u8fc7\u5927\uff0c\u4e0d\u4e3a\u7b97\u672f\u5e73\u65b9\u6839\uff0c\u5411\u5de6\u67e5\u627e\n            }\n        }\n        return left - 1;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ax = 4\n\u8f93\u51fa\uff1a2\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ax = 8\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1a8 \u7684\u7b97\u672f\u5e73\u65b9\u6839\u662f 2.82842..., \u7531\u4e8e\u8fd4\u56de\u7c7b\u578b\u662f\u6574\u6570\uff0c\u5c0f\u6570\u90e8\u5206\u5c06\u88ab\u820d\u53bb\u3002\n<\/code><\/pre>\n<h3 id=\"powxn\">Pow(x,n)<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-157\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u5b9e\u73b0 <a href=\"https:\/\/www.cplusplus.com\/reference\/valarray\/pow\/\">pow(<em>x<\/em>, <em>n<\/em>)<\/a> \uff0c\u5373\u8ba1\u7b97 <code>x<\/code> \u7684\u6574\u6570 <code>n<\/code> \u6b21\u5e42\u51fd\u6570\uff08\u5373\uff0c<code>xn<\/code> \uff09\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-138\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><a href=\"https:\/\/leetcode.cn\/problems\/powx-n\/solutions\/2858114\/tu-jie-yi-zhang-tu-miao-dong-kuai-su-mi-ykp3i\/?envType=study-plan-v2&amp;envId=top-interview-150\">50. Pow(x, n) &#8211; \u529b\u6263\uff08LeetCode\uff09<\/a><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-158\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">class Solution {\npublic:\n    double myPow(double x, int N) {\n\n        double ans = 1;\n        long long n = N;\n\n        if (n &lt; 0)\n        {\n            n = -n;\n            x = 1 \/ x;\n        }\n\n        while (n)\n        {\n            if (n &amp; 1)\n            {\n                ans *= x;\n            }\n            x *= x;\n\n            n &gt;&gt;= 1;\n        }\n\n        return ans;\n\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ax = 2.00000, n = 10\n\u8f93\u51fa\uff1a1024.00000\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ax = 2.10000, n = 3\n\u8f93\u51fa\uff1a9.26100\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ax = 2.00000, n = -2\n\u8f93\u51fa\uff1a0.25000\n\u89e3\u91ca\uff1a2-2 = 1\/22 = 1\/4 = 0.25\n<\/code><\/pre>\n<h3 id=\"\u76f4\u7ebf\u4e0a\u6700\u591a\u7684\u70b9\u6570\">\u76f4\u7ebf\u4e0a\u6700\u591a\u7684\u70b9\u6570<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-158\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6570\u7ec4 <code>points<\/code> \uff0c\u5176\u4e2d <code>points[i] = [xi, yi]<\/code> \u8868\u793a <strong>X-Y<\/strong> \u5e73\u9762\u4e0a\u7684\u4e00\u4e2a\u70b9\u3002\u6c42\u6700\u591a\u6709\u591a\u5c11\u4e2a\u70b9\u5728\u540c\u4e00\u6761\u76f4\u7ebf\u4e0a\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-139\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u5728\u8ba1\u7b97\u659c\u7387\u65f6\uff0c\u5f97\u51fa\u5206\u5b50\u4e0e\u5206\u6bcd\u4e0a\u7684\u6700\u5927\u516c\u7ea6\u6570\uff0c\u5982\u679c\u8fd9\u4e2a\u659c\u7387\u662f\u7b2c\u4e00\u6b21\u51fa\u73b0\uff0c\u5219\u5728\u54c8\u5e0c\u8868\u4e2d\u521d\u59cb\u5316\u4e3a1\uff0c\u5f80\u540e\u518d\u51fa\u73b0\u7684\u65f6\u5019\uff0c\u6570\u91cf\u52a0\u4e00<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-159\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n\nusing namespace std;\n\nclass Solution {\nprivate:\n    const int K = 20001;    \/\/ \u751f\u6210\u659c\u7387\u4e8c\u5143\u7ec4\u7f16\u53f7\u7684\u7cfb\u6570\n\n    \/**\n     * \u8f97\u8f6c\u76f8\u9664\u6cd5\u6c42a\u548cb\u7684\u6700\u5927\u516c\u7ea6\u6570\n     *\/\n    int gcd(int a, int b) {\n        if (a == 1 || b == 1)return 1;\n        while (b &gt; 0) {\n            int tmp = a;\n            a = b;\n            b = tmp % b;\n        }\n        return a;\n    }\n\n    \/**\n     * \u83b7\u53d6\u7ed9\u5b9adx\u548cdy\u7684\u659c\u7387\u4e8c\u5143\u7ec4\uff08dx, dy\uff09\u7f16\u53f7\n     * \u659c\u7387\u7f16\u53f7 id = dx * 20001 + dy\n     * \u4e3a\u4e86\u6b63\u786e\u8868\u793a\u659c\u7387\uff0c\u9700\u8981\u5bf9dx\u548cdy\u8fdb\u884c\u7ea6\u5206\uff0c\u5373\u4e8c\u8005\u540c\u65f6\u9664\u4ee5\u6700\u5927\u516c\u7ea6\u6570\n     * \u659c\u7387\u533a\u5206\u6b63\u8d1f\uff0c\u6211\u4eec\u53ef\u4ee5\u6839\u636e\u659c\u7387\u7b26\u53f7\u5bf9\u7f16\u53f7\u52a0\u4e0a\u6b63\u8d1f\u8fdb\u884c\u533a\u5206\n     * \u7279\u522b\u7684\uff0c\u5bf9\u4e8edx = 0\uff08dy = 0\uff09\uff0c\u65e0\u8bbady\uff08dx\uff09\u503c\u4e3a\u591a\u5c11\uff0c\u659c\u7387\u90fd\u662f\u4e00\u6837\u4e3a0\uff08\u221e\uff09\uff0c\u6211\u4eec\u7528INT_MAX\u6700\u5927\u503c\u8868\u793a\u65e0\u7a77\n     *\/\n    int getK(int dx, int dy) {\n        if (dx == 0)return 0;        \/\/ dx\u4e3a0 \u8fd4\u56de\u659c\u7387\u7f16\u53f7\u4e3a0\n        if (dy == 0)return INT_MAX;  \/\/ dy\u4e3a0\uff0c\u8fd4\u56de\u659c\u7387\u7f16\u53f7\u4e3a\u6781\u5927\u503c\n        int sign = dx * dy &gt; 0 ? 1 : -1;    \/\/ \u83b7\u53d6\u659c\u7387\u7f16\u53f7\u7b26\u53f7\n        dx = abs(dx);\n        dy = abs(dy);\n        int g = gcd(dx, dy);    \/\/ \u5c06dx\u548cdy\u53d6\u7edd\u5bf9\u503c\u540e\u53d6\u6700\u5927\u516c\u7ea6\u6570\n        dx \/= g;\n        dy \/= g;    \/\/ \u5f97\u5230\u659c\u7387\u5206\u5b50\u548c\u5206\u6bcd\u7edd\u5bf9\u503c\n        \/\/ std::cout &lt;&lt; \"dx: \" &lt;&lt; dx &lt;&lt; \" dy: \" &lt;&lt; dy &lt;&lt; std::endl;\n        return sign * (dx * K + dy);    \/\/ \u8fd4\u56de\u7edd\u5bf9\u503c\u7f16\u53f7\n    }\n\npublic:\n    int maxPoints(vector&lt;vector&lt;int&gt;&gt;&amp; points) {\n        int n = points.size();\n        if (n &lt;= 2)return n;\t\t\/\/ \u4e0d\u8d85\u8fc7\u4e24\u4e2a\u70b9\u7684\u4e00\u5b9a\u5171\u7ebf\n        int res = 0;\n        for (int i = 0; i &lt; n; i++) {\n            \/\/ \u5982\u679c\u5f53\u524d\u6700\u5927\u5171\u7ebf\u70b9\u6570\u8d85\u8fc7\u5269\u4e0b\u8981\u679a\u4e3e\u7684\u70b9\u6570\uff0c\u5219\u4e00\u5b9a\u662f\u6700\u5927\u503c\n            if (res &gt;= n - i)\n                break;\n            \/\/ \u83b7\u53d6(x1, y1)\u6240\u5728\u76f4\u7ebf\u7684\u6700\u5927\u70b9\u6570\n            int x1 = points[i][0], y1 = points[i][1];\n            int maxCnt = 1;                 \/\/ \u7edf\u8ba1(x1, y1)\u6240\u5728\u76f4\u7ebf\u7684\u6700\u5927\u70b9\u6570\n            unordered_map&lt;int, int&gt; kCnts;  \/\/ \u7edf\u8ba1(x1, y1)\u6240\u5728\u5404\u76f4\u7ebf\u7684\u70b9\u6570\n            for (int j = i + 1; j &lt; n; j++) {\n                int x2 = points[j][0], y2 = points[j][1];\n                int k = getK(x2 - x1, y2 - y1);     \/\/ \u83b7\u53d6(x1, y1)\u548c(x2, y2)\u7684\u659c\u7387\u7f16\u53f7\n                if (kCnts.find(k) == kCnts.end()) {\n                    kCnts[k] = 1;   \/\/ \u8fd9\u4e2a\u659c\u7387\u9996\u6b21\u51fa\u73b0\uff0c\u521d\u59cb\u503c\u4e3a1\uff0c\u8868\u793a(x1, y1)\u8fd9\u4e2a\u70b9\n                }\n                kCnts[k]++; \/\/ \u7d2f\u52a01\uff0c\u8868\u793a\u52a0\u5165(x2, y2)\u8fd9\u4e2a\u70b9\n            }\n            \/\/ \u7edf\u8ba1(x1, y1)\u5728\u7ebf\u7684\u6700\u5927\u5171\u7ebf\u70b9\u6570\n            for (auto&amp; kv : kCnts) {\n                maxCnt = max(maxCnt, kv.second);\n            }\n            \/\/ \u66f4\u65b0\u7ed3\u679c\n            res = max(res, maxCnt);\n        }\n        return res;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/02\/25\/plane1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/02\/25\/plane1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1apoints = [[1,1],[2,2],[3,3]]\n\u8f93\u51fa\uff1a3\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2021\/02\/25\/plane2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2021\/02\/25\/plane2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1apoints = [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]\n\u8f93\u51fa\uff1a4\n<\/code><\/pre>\n<h2 id=\"\u52a8\u6001\u89c4\u5212-3\">\u52a8\u6001\u89c4\u5212<\/h2>\n<h3 id=\"\u722c\u697c\u68af\">\u722c\u697c\u68af<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-159\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u5047\u8bbe\u4f60\u6b63\u5728\u722c\u697c\u68af\u3002\u9700\u8981 <code>n<\/code> \u9636\u4f60\u624d\u80fd\u5230\u8fbe\u697c\u9876\u3002<\/p>\n<p>\u6bcf\u6b21\u4f60\u53ef\u4ee5\u722c <code>1<\/code> \u6216 <code>2<\/code> \u4e2a\u53f0\u9636\u3002\u4f60\u6709\u591a\u5c11\u79cd\u4e0d\u540c\u7684\u65b9\u6cd5\u53ef\u4ee5\u722c\u5230\u697c\u9876\u5462\uff1f<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-140\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><a href=\"https:\/\/leetcode.cn\/problems\/climbing-stairs\/solutions\/2560716\/jiao-ni-yi-bu-bu-si-kao-dong-tai-gui-hua-7zm1\/?envType=study-plan-v2&amp;envId=top-interview-150\">70. \u722c\u697c\u68af &#8211; \u529b\u6263\uff08LeetCode\uff09<\/a><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-160\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n\n    vector&lt;int&gt; b;\n\n    int dfs(int n)\n    {\n        if (n &lt;= 1)\n        {\n            return 1;\n        }\n\n        int&amp; res = b[n];\n\n        if (res)\n        {\n            return res;\n        }\n\n        return res = dfs(n - 2) + dfs(n - 1);\n    }\n\n    int climbStairs(int n) {\n\n        b.resize(n + 1);\n\n        return dfs(n);\n\n    }\n};\n\n\nclass Solution {\npublic:\n    int climbStairs(int n) {\n        vector&lt;int&gt; f(n + 1);\n        f[0] = f[1] = 1;\n        for (int i = 2; i &lt;= n; i++) {\n            f[i] = f[i - 1] + f[i - 2];\n        }\n        return f[n];\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 2\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1a\u6709\u4e24\u79cd\u65b9\u6cd5\u53ef\u4ee5\u722c\u5230\u697c\u9876\u3002\n1. 1 \u9636 + 1 \u9636\n2. 2 \u9636\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1an = 3\n\u8f93\u51fa\uff1a3\n\u89e3\u91ca\uff1a\u6709\u4e09\u79cd\u65b9\u6cd5\u53ef\u4ee5\u722c\u5230\u697c\u9876\u3002\n1. 1 \u9636 + 1 \u9636 + 1 \u9636\n2. 1 \u9636 + 2 \u9636\n3. 2 \u9636 + 1 \u9636\n<\/code><\/pre>\n<h3 id=\"\u6253\u5bb6\u52ab\u820d\">\u6253\u5bb6\u52ab\u820d<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-160\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u4f60\u662f\u4e00\u4e2a\u4e13\u4e1a\u7684\u5c0f\u5077\uff0c\u8ba1\u5212\u5077\u7a83\u6cbf\u8857\u7684\u623f\u5c4b\u3002\u6bcf\u95f4\u623f\u5185\u90fd\u85cf\u6709\u4e00\u5b9a\u7684\u73b0\u91d1\uff0c\u5f71\u54cd\u4f60\u5077\u7a83\u7684\u552f\u4e00\u5236\u7ea6\u56e0\u7d20\u5c31\u662f\u76f8\u90bb\u7684\u623f\u5c4b\u88c5\u6709\u76f8\u4e92\u8fde\u901a\u7684\u9632\u76d7\u7cfb\u7edf\uff0c<strong>\u5982\u679c\u4e24\u95f4\u76f8\u90bb\u7684\u623f\u5c4b\u5728\u540c\u4e00\u665a\u4e0a\u88ab\u5c0f\u5077\u95ef\u5165\uff0c\u7cfb\u7edf\u4f1a\u81ea\u52a8\u62a5\u8b66<\/strong>\u3002<\/p>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u4ee3\u8868\u6bcf\u4e2a\u623f\u5c4b\u5b58\u653e\u91d1\u989d\u7684\u975e\u8d1f\u6574\u6570\u6570\u7ec4\uff0c\u8ba1\u7b97\u4f60 <strong>\u4e0d\u89e6\u52a8\u8b66\u62a5\u88c5\u7f6e\u7684\u60c5\u51b5\u4e0b<\/strong> \uff0c\u4e00\u591c\u4e4b\u5185\u80fd\u591f\u5077\u7a83\u5230\u7684\u6700\u9ad8\u91d1\u989d\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-141\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><a href=\"https:\/\/leetcode.cn\/problems\/house-robber\/solutions\/2102725\/ru-he-xiang-chu-zhuang-tai-ding-yi-he-zh-1wt1\/?envType=study-plan-v2&amp;envId=top-interview-150\">198. \u6253\u5bb6\u52ab\u820d &#8211; \u529b\u6263\uff08LeetCode\uff09<\/a><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-161\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int rob(vector&lt;int&gt;&amp; nums) {\n        int n = nums.size();\n        vector&lt;int&gt; f(n + 2);\n        for (int i = 0; i &lt; n; i++) {\n            f[i + 2] = max(f[i + 1], f[i] + nums[i]);\n        }\n        return f[n + 1];\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1a[1,2,3,1]\n\u8f93\u51fa\uff1a4\n\u89e3\u91ca\uff1a\u5077\u7a83 1 \u53f7\u623f\u5c4b (\u91d1\u989d = 1) \uff0c\u7136\u540e\u5077\u7a83 3 \u53f7\u623f\u5c4b (\u91d1\u989d = 3)\u3002\n     \u5077\u7a83\u5230\u7684\u6700\u9ad8\u91d1\u989d = 1 + 3 = 4 \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1a[2,7,9,3,1]\n\u8f93\u51fa\uff1a12\n\u89e3\u91ca\uff1a\u5077\u7a83 1 \u53f7\u623f\u5c4b (\u91d1\u989d = 2), \u5077\u7a83 3 \u53f7\u623f\u5c4b (\u91d1\u989d = 9)\uff0c\u63a5\u7740\u5077\u7a83 5 \u53f7\u623f\u5c4b (\u91d1\u989d = 1)\u3002\n     \u5077\u7a83\u5230\u7684\u6700\u9ad8\u91d1\u989d = 2 + 9 + 1 = 12 \u3002\n<\/code><\/pre>\n<h3 id=\"\u5355\u8bcd\u62c6\u5206\">\u5355\u8bcd\u62c6\u5206<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-161\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32 <code>s<\/code> \u548c\u4e00\u4e2a\u5b57\u7b26\u4e32\u5217\u8868 <code>wordDict<\/code> \u4f5c\u4e3a\u5b57\u5178\u3002\u5982\u679c\u53ef\u4ee5\u5229\u7528\u5b57\u5178\u4e2d\u51fa\u73b0\u7684\u4e00\u4e2a\u6216\u591a\u4e2a\u5355\u8bcd\u62fc\u63a5\u51fa <code>s<\/code> \u5219\u8fd4\u56de <code>true<\/code>\u3002<\/p>\n<p><strong>\u6ce8\u610f\uff1a<\/strong>\u4e0d\u8981\u6c42\u5b57\u5178\u4e2d\u51fa\u73b0\u7684\u5355\u8bcd\u5168\u90e8\u90fd\u4f7f\u7528\uff0c\u5e76\u4e14\u5b57\u5178\u4e2d\u7684\u5355\u8bcd\u53ef\u4ee5\u91cd\u590d\u4f7f\u7528\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-142\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-162\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;unordered_set&gt;\n#include &lt;string&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    bool wordBreak(string s, vector&lt;string&gt;&amp; wordDict) {\n        int n = s.size();\n        unordered_set&lt;string&gt; st = { wordDict.begin(),wordDict.end() };\n        vector&lt;int&gt; memo(n, -1);\n        auto dfs = [&amp;](auto&amp;&amp; dfs, int i) -&gt; bool {\n            if (i &lt; 0) return true;\n            if (memo[i] != -1) return memo[i];\n            \/\/\u679a\u4e3e\u6bcf\u4e00\u4e2a\u5207\u5206\u70b9\uff0c\u4e0d\u80fd\u4e3a\u7a7a\n            bool ok = false;\n            for (int k = i; k &gt;= 0; k--) {\n                string suffix = s.substr(k, i - k + 1);\n                ok = ok || (st.contains(suffix) &amp;&amp; dfs(dfs, k - 1));\n                if (ok) return memo[i] = true;\n            }\n            return memo[i] = false;\n            };\n        return dfs(dfs, n - 1);\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"leetcode\", wordDict = [\"leet\", \"code\"]\n\u8f93\u51fa: true\n\u89e3\u91ca: \u8fd4\u56de true \u56e0\u4e3a \"leetcode\" \u53ef\u4ee5\u7531 \"leet\" \u548c \"code\" \u62fc\u63a5\u6210\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"applepenapple\", wordDict = [\"apple\", \"pen\"]\n\u8f93\u51fa: true\n\u89e3\u91ca: \u8fd4\u56de true \u56e0\u4e3a \"applepenapple\" \u53ef\u4ee5\u7531 \"apple\" \"pen\" \"apple\" \u62fc\u63a5\u6210\u3002\n     \u6ce8\u610f\uff0c\u4f60\u53ef\u4ee5\u91cd\u590d\u4f7f\u7528\u5b57\u5178\u4e2d\u7684\u5355\u8bcd\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165: s = \"catsandog\", wordDict = [\"cats\", \"dog\", \"sand\", \"and\", \"cat\"]\n\u8f93\u51fa: false\n<\/code><\/pre>\n<h3 id=\"\u96f6\u94b1\u5151\u6362\">\u96f6\u94b1\u5151\u6362<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-162\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>coins<\/code> \uff0c\u8868\u793a\u4e0d\u540c\u9762\u989d\u7684\u786c\u5e01\uff1b\u4ee5\u53ca\u4e00\u4e2a\u6574\u6570 <code>amount<\/code> \uff0c\u8868\u793a\u603b\u91d1\u989d\u3002<\/p>\n<p>\u8ba1\u7b97\u5e76\u8fd4\u56de\u53ef\u4ee5\u51d1\u6210\u603b\u91d1\u989d\u6240\u9700\u7684 <strong>\u6700\u5c11\u7684\u786c\u5e01\u4e2a\u6570<\/strong> \u3002\u5982\u679c\u6ca1\u6709\u4efb\u4f55\u4e00\u79cd\u786c\u5e01\u7ec4\u5408\u80fd\u7ec4\u6210\u603b\u91d1\u989d\uff0c\u8fd4\u56de <code>-1<\/code> \u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u8ba4\u4e3a\u6bcf\u79cd\u786c\u5e01\u7684\u6570\u91cf\u662f\u65e0\u9650\u7684\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-143\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-163\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    int coinChange(vector&lt;int&gt;&amp; coins, int amount) {\n        int n = coins.size();\n\n        vector&lt;vector&lt;int&gt;&gt; memo(n, vector&lt;int&gt;(amount + 1, -1));\n\n        auto dfs = [&amp;](auto&amp;&amp; dfs, int i, int c) -&gt; int {\n            if (i &lt; 0)\n            {\n                return c == 0 ? 0 : INT_MAX \/ 2;\n            }\n\n            int&amp; res = memo[i][c];\n\n            if (res != -1) \/\/\u4e4b\u524d\u8ba1\u7b97\u8fc7\n            {\n                return res;\n            }\n\n            if (c &lt; coins[i])\n            {\n                return res = dfs(dfs, i - 1, c);\n            }\n\n            \/\/\u9012\u5f52\u8003\u8651\u4e24\u79cd\u60c5\u51b5\uff1a\u4e0d\u4f7f\u7528\u5f53\u524d\u786c\u5e01\u548c\u81f3\u5c11\u4f7f\u7528\u4e00\u4e2a\u5f53\u524d\u786c\u5e01\u3002\u53d6\u8fd9\u4e24\u79cd\u60c5\u51b5\u7684\u6700\u5c0f\u503c\uff0c\u5e76\u5b58\u50a8\u5728 memo[i][c] \u4e2d\u3002\n            return res = min(dfs(dfs, i - 1, c), dfs(dfs, i, c - coins[i]) + 1);\n\n            };\n\n        int ans = dfs(dfs, n - 1, amount);\n        return ans &lt; INT_MAX \/ 2 ? ans : -1;\n\n    }\n             \n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1acoins = [1, 2, 5], amount = 11\n\u8f93\u51fa\uff1a3 \n\u89e3\u91ca\uff1a11 = 5 + 5 + 1\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1acoins = [2], amount = 3\n\u8f93\u51fa\uff1a-1\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1acoins = [1], amount = 0\n\u8f93\u51fa\uff1a0\n<\/code><\/pre>\n<h3 id=\"\u6700\u957f\u9012\u589e\u5b50\u5e8f\u5217\">\u6700\u957f\u9012\u589e\u5b50\u5e8f\u5217<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-163\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \uff0c\u627e\u5230\u5176\u4e2d\u6700\u957f\u4e25\u683c\u9012\u589e\u5b50\u5e8f\u5217\u7684\u957f\u5ea6\u3002<\/p>\n<p><strong>\u5b50\u5e8f\u5217<\/strong> \u662f\u7531\u6570\u7ec4\u6d3e\u751f\u800c\u6765\u7684\u5e8f\u5217\uff0c\u5220\u9664\uff08\u6216\u4e0d\u5220\u9664\uff09\u6570\u7ec4\u4e2d\u7684\u5143\u7d20\u800c\u4e0d\u6539\u53d8\u5176\u4f59\u5143\u7d20\u7684\u987a\u5e8f\u3002\u4f8b\u5982\uff0c<code>[3,6,2,7]<\/code> \u662f\u6570\u7ec4 <code>[0,3,1,6,2,2,7]<\/code> \u7684\u5b50\u5e8f\u5217\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-144\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-164\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;iostream&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int lengthOfLIS(vector&lt;int&gt;&amp; nums) {\n        int n = nums.size();\n\n        vector&lt;int&gt; memo(n);\n\n        auto dfs = [&amp;](auto&amp;&amp; dfs, int i) -&gt; int {\n\n            int&amp; res = memo[i];\n\n            if (res &gt; 0)\n            {\n                return res;\n            }\n\n            for (int j = 0; j &lt; i; j++)\n            {\n                if (nums[j] &lt; nums[i])\n                {\n                    res = max(res, dfs(dfs, j));\n                }\n\n\n            }\n\n            return ++res;\n\n         };\n\n\n        int ans = 0;\n\n        for (int i = 0; i &lt; n; i++)\n        {\n            ans = max(ans, dfs(dfs, i));\n        }\n\n        return ans;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [10,9,2,5,3,7,101,18]\n\u8f93\u51fa\uff1a4\n\u89e3\u91ca\uff1a\u6700\u957f\u9012\u589e\u5b50\u5e8f\u5217\u662f [2,3,7,101]\uff0c\u56e0\u6b64\u957f\u5ea6\u4e3a 4 \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [0,1,0,3,2,3]\n\u8f93\u51fa\uff1a4\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1anums = [7,7,7,7,7,7,7]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<h3 id=\"\u4e09\u89d2\u5f62\u6700\u5c0f\u8def\u5f84\u548c\">\u4e09\u89d2\u5f62\u6700\u5c0f\u8def\u5f84\u548c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-164\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u4e09\u89d2\u5f62 <code>triangle<\/code> \uff0c\u627e\u51fa\u81ea\u9876\u5411\u4e0b\u7684\u6700\u5c0f\u8def\u5f84\u548c\u3002<\/p>\n<p>\u6bcf\u4e00\u6b65\u53ea\u80fd\u79fb\u52a8\u5230\u4e0b\u4e00\u884c\u4e2d\u76f8\u90bb\u7684\u7ed3\u70b9\u4e0a\u3002<strong>\u76f8\u90bb\u7684\u7ed3\u70b9<\/strong> \u5728\u8fd9\u91cc\u6307\u7684\u662f <strong>\u4e0b\u6807<\/strong> \u4e0e <strong>\u4e0a\u4e00\u5c42\u7ed3\u70b9\u4e0b\u6807<\/strong> \u76f8\u540c\u6216\u8005\u7b49\u4e8e <strong>\u4e0a\u4e00\u5c42\u7ed3\u70b9\u4e0b\u6807 + 1<\/strong> \u7684\u4e24\u4e2a\u7ed3\u70b9\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u5982\u679c\u6b63\u4f4d\u4e8e\u5f53\u524d\u884c\u7684\u4e0b\u6807 <code>i<\/code> \uff0c\u90a3\u4e48\u4e0b\u4e00\u6b65\u53ef\u4ee5\u79fb\u52a8\u5230\u4e0b\u4e00\u884c\u7684\u4e0b\u6807 <code>i<\/code> \u6216 <code>i + 1<\/code> \u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-145\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-165\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;iostream&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int minimumTotal(vector&lt;vector&lt;int&gt;&gt;&amp; triangle) {\n        int row = triangle.size();\n\n        for (int i = 1; i &lt; row; i++)\n        {\n            for (int j = 0; j &lt; i; j++)\n            {\n                if (j == 0)\n                {\n                    triangle[i][j] += triangle[i - 1][j];\n                }\n                else\n                {\n                    if (i == j)\n                    {\n                        triangle[i][j] += triangle[i - 1][j - 1];\n                    }\n                    else\n                    {\n                        triangle[i][j] += min(triangle[i - 1][j], triangle[i-1][j - 1]);\n                    }\n                }\n            }\n        }\n\n        \/\/ \u6c42\u8fd4\u56de\u503c\uff1a\u6700\u5e95\u5c42\u7684\u6570\u7ec4\u4e2d\u7684\u6700\u5c0f\u503c\n        int minSum = triangle[row - 1][0];\n        for (auto e : triangle[row - 1])\n        {\n            if (minSum &gt; e) minSum = e;\n        }\n        return minSum;\n\n    }\n};\n\nclass Solution {\npublic:\n    int minimumTotal(vector&lt;vector&lt;int&gt;&gt;&amp; triangle) {\n        int row = triangle.size();\n        \/\/\u81ea\u4e0b\u800c\u4e0a\u904d\u5386\n        for (int i = row - 2; i &gt;= 0; --i) \/\/ \u6700\u540e\u4e00\u884c\u4f5c\u521d\u59cb\u503c \u4e0d\u53c2\u4e0e\u904d\u5386\n        {\n            for (int j = 0; j &lt;= i; ++j)\n            {\n                triangle[i][j] += min(triangle[i + 1][j], triangle[i + 1][j + 1]);\n            }\n        }\n\n        return triangle[0][0];\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1atriangle = [[2],[3,4],[6,5,7],[4,1,8,3]]\n\u8f93\u51fa\uff1a11\n\u89e3\u91ca\uff1a\u5982\u4e0b\u9762\u7b80\u56fe\u6240\u793a\uff1a\n   2\n  3 4\n 6 5 7\n4 1 8 3\n\u81ea\u9876\u5411\u4e0b\u7684\u6700\u5c0f\u8def\u5f84\u548c\u4e3a 11\uff08\u5373\uff0c2 + 3 + 5 + 1 = 11\uff09\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1atriangle = [[-10]]\n\u8f93\u51fa\uff1a-10\n<\/code><\/pre>\n<h3 id=\"\u6700\u5c0f\u8def\u5f84\u548c\">\u6700\u5c0f\u8def\u5f84\u548c<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-165\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u5305\u542b\u975e\u8d1f\u6574\u6570\u7684 <code>*m* x *n*<\/code> \u7f51\u683c <code>grid<\/code> \uff0c\u8bf7\u627e\u51fa\u4e00\u6761\u4ece\u5de6\u4e0a\u89d2\u5230\u53f3\u4e0b\u89d2\u7684\u8def\u5f84\uff0c\u4f7f\u5f97\u8def\u5f84\u4e0a\u7684\u6570\u5b57\u603b\u548c\u4e3a\u6700\u5c0f\u3002<\/p>\n<p><strong>\u8bf4\u660e\uff1a<\/strong>\u6bcf\u6b21\u53ea\u80fd\u5411\u4e0b\u6216\u8005\u5411\u53f3\u79fb\u52a8\u4e00\u6b65\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-146\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-166\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    int minPathSum(vector&lt;vector&lt;int&gt;&gt;&amp; grid) {\n        int m = grid.size();\n        int n = grid[0].size();\n        vector&lt;vector&lt;int&gt;&gt; dp(m + 1, vector&lt;int&gt;(n + 1, INT_MAX)); \/\/ dp[i+1][j+1]\u8868\u793a\u5230\u8fbegrid[i][j]\u7684\u6700\u5c0f\u8def\u5f84\u548c\n        dp[0][1] = dp[1][0] = 0;  \/\/ \u7279\u6b8a\u5904\u7406\u5904\u7406dp[1][1]\u7684\u5de6\u4fa7\u548c\u4e0a\u4fa7\u7684\u72b6\u6001\uff0c\u4fdd\u8bc1dp[1][1]=grid[0][0]\n        \/\/ \u72b6\u6001\u8f6c\u79fb\n        for (int i = 0; i &lt; m; i++) {\n            for (int j = 0; j &lt; n; j++) {\n                dp[i + 1][j + 1] = min(dp[i + 1][j], dp[i][j + 1]) + grid[i][j];\n            }\n        }\n        return dp[m][n];   \/\/ \u6700\u7ec8\u5b58\u50a8\u7684\u662f\u5230\u8fbegrid[m-1][n-1]\u7684\u6700\u5c0f\u8def\u5f84\u548c\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/05\/minpath.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/05\/minpath.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1agrid = [[1,3,1],[1,5,1],[4,2,1]]\n\u8f93\u51fa\uff1a7\n\u89e3\u91ca\uff1a\u56e0\u4e3a\u8def\u5f84 1\u21923\u21921\u21921\u21921 \u7684\u603b\u548c\u6700\u5c0f\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1agrid = [[1,2,3],[4,5,6]]\n\u8f93\u51fa\uff1a12\n<\/code><\/pre>\n<h3 id=\"\u4e0d\u540c\u8def\u5f84\u2171\">\u4e0d\u540c\u8def\u5f84\u2161<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-166\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u4e00\u4e2a\u673a\u5668\u4eba\u4f4d\u4e8e\u4e00\u4e2a <code>m x n<\/code> \u7f51\u683c\u7684\u5de6\u4e0a\u89d2 \uff08\u8d77\u59cb\u70b9\u5728\u4e0b\u56fe\u4e2d\u6807\u8bb0\u4e3a \u201cStart\u201d \uff09\u3002<\/p>\n<p>\u673a\u5668\u4eba\u6bcf\u6b21\u53ea\u80fd\u5411\u4e0b\u6216\u8005\u5411\u53f3\u79fb\u52a8\u4e00\u6b65\u3002\u673a\u5668\u4eba\u8bd5\u56fe\u8fbe\u5230\u7f51\u683c\u7684\u53f3\u4e0b\u89d2\uff08\u5728\u4e0b\u56fe\u4e2d\u6807\u8bb0\u4e3a \u201cFinish\u201d\uff09\u3002<\/p>\n<p>\u73b0\u5728\u8003\u8651\u7f51\u683c\u4e2d\u6709\u969c\u788d\u7269\u3002\u90a3\u4e48\u4ece\u5de6\u4e0a\u89d2\u5230\u53f3\u4e0b\u89d2\u5c06\u4f1a\u6709\u591a\u5c11\u6761\u4e0d\u540c\u7684\u8def\u5f84\uff1f<\/p>\n<p>\u7f51\u683c\u4e2d\u7684\u969c\u788d\u7269\u548c\u7a7a\u4f4d\u7f6e\u5206\u522b\u7528 <code>1<\/code> \u548c <code>0<\/code> \u6765\u8868\u793a\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-147\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-167\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\n\n\nclass Solution {\npublic:\n    int uniquePathsWithObstacles(vector&lt;vector&lt;int&gt;&gt;&amp; obstacleGrid) {\n        if (obstacleGrid[0][0] == 1)return 0;    \/\/ \u8d77\u70b9\u5c31\u6709\u969c\u788d\u7269 \u65e0\u6cd5\u8f6c\u79fb\n        int m = obstacleGrid.size();\n        int n = obstacleGrid[0].size();\n        vector&lt;int&gt; dp(n + 1, 0); \/\/ dp[j+1]\u8868\u793a\u5230\u8fbegrid[i][j]\u7684\u4e0d\u540c\u8def\u5f84\uff0c\u521d\u59cb\u90fd\u4e3a0\u8868\u793a\u4e0d\u53ef\u8fbe\n        dp[1] = 1;  \/\/ \u5230\u8fbe(0,0)\u53ea\u6709\u4e00\u6761\u8def\u5f84\n        \/\/ \u72b6\u6001\u8f6c\u79fb\n        for (int i = 0; i &lt; m; i++) {\n            for (int j = 0; j &lt; n; j++) {\n                if (obstacleGrid[i][j] == 1) {\n                    dp[j + 1] = 0;    \/\/ \u969c\u788d\u7269\u7f51\u683c\u4e0d\u53ef\u8fbe\uff0c\u65e0\u72b6\u6001\u8f6c\u79fb\n                }\n                else {\n                    \/\/ dp[j+1] \u7b49\u4ef7\u4e8edp[i][j+1] \u8868\u793a\u5230\u8fbe(i-1, j)\u7684\u4e0d\u540c\u8def\u5f84\n                    \/\/ dp[j] \u7b49\u4ef7\u4e8e dp[i+1][j] \u8868\u793a\u5230\u8fbe(i, j-1)\u7684\u4e0d\u540c\u8def\u5f84\n                    dp[j + 1] += dp[j];\n                }\n            }\n        }\n        return dp[n];   \/\/ \u6700\u7ec8\u5b58\u50a8\u7684\u662f\u5230\u8fbegrid[m-1][n-1]\u7684\u4e0d\u540c\u8def\u5f84\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/04\/robot1.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/04\/robot1.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aobstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1a3x3 \u7f51\u683c\u7684\u6b63\u4e2d\u95f4\u6709\u4e00\u4e2a\u969c\u788d\u7269\u3002\n\u4ece\u5de6\u4e0a\u89d2\u5230\u53f3\u4e0b\u89d2\u4e00\u5171\u6709 2 \u6761\u4e0d\u540c\u7684\u8def\u5f84\uff1a\n1. \u5411\u53f3 -&gt; \u5411\u53f3 -&gt; \u5411\u4e0b -&gt; \u5411\u4e0b\n2. \u5411\u4e0b -&gt; \u5411\u4e0b -&gt; \u5411\u53f3 -&gt; \u5411\u53f3\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/04\/robot2.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/04\/robot2.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1aobstacleGrid = [[0,1],[0,0]]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<h3 id=\"\u6700\u957f\u56de\u6587\u5b50\u4e32\">\u6700\u957f\u56de\u6587\u5b50\u4e32<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-167\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32 <code>s<\/code>\uff0c\u627e\u5230 <code>s<\/code> \u4e2d\u6700\u957f\u7684 \u56de\u6587 \u5b50\u4e32\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-148\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-168\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;string&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    string longestPalindrome(string s) {\n        int n = s.size();\n        int length = 1; \/\/ \u6700\u957f\u56de\u6587\u5b50\u4e32\u7684\u957f\u5ea6\n        int start = 0;  \/\/ \u6700\u957f\u56de\u6587\u5b50\u4e32\u7684\u8d77\u59cb\u4f4d\u7f6e\n        vector&lt;vector&lt;bool&gt;&gt; dp(n, vector&lt;bool&gt;(n));    \/\/ dp[j][i]\u8868\u793a\u5b50\u4e32s[j:i]\u662f\u5426\u4e3a\u56de\u6587\u4e32\n        for (int i = 0; i &lt; n; i++) {\n            \/\/ \u4ee5i\u4e3a\u7ec8\u70b9\uff0c\u5f80\u56de\u679a\u4e3e\u8d77\u70b9j\n            for (int j = i; j &gt;= 0; j--) {\n                if (i == j) {\n                    dp[j][i] = true;    \/\/ \u4e00\u4e2a\u5b57\u7b26\uff0c\u4e00\u5b9a\u4e3a\u56de\u6587\u4e32\n                }\n                else if (i == j + 1) {\n                    dp[j][i] = (s[i] == s[j]);  \/\/ \u4e24\u4e2a\u5b57\u7b26\uff0c\u53d6\u51b3\u4e8e\u4e8c\u8005\u662f\u5426\u76f8\u7b49\n                }\n                else {\n                    dp[j][i] = (s[i] == s[j]) &amp;&amp; dp[j + 1][i - 1];  \/\/ \u4e24\u4e2a\u5b57\u7b26\u4ee5\u4e0a\uff0c\u9996\u5148\u7aef\u70b9\u4e24\u4e2a\u5b57\u7b26\u8981\u76f8\u7b49\uff0c\u5176\u6b21[j+1, i-1]\u4e5f\u8981\u4e3a\u56de\u6587\u4e32\n                }\n                \/\/ [j,i]\u4e3a\u56de\u6587\u4e32\u4e14\u957f\u5ea6\u66f4\u5927\uff0c\u66f4\u65b0\n                if (dp[j][i] &amp;&amp; (i - j + 1) &gt; length) {\n                    length = i - j + 1;\n                    start = j;\n                }\n            }\n        }\n        return s.substr(start, length); \/\/ \u622a\u53d6\u6700\u957f\u56de\u6587\u5b50\u4e32\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"babad\"\n\u8f93\u51fa\uff1a\"bab\"\n\u89e3\u91ca\uff1a\"aba\" \u540c\u6837\u662f\u7b26\u5408\u9898\u610f\u7684\u7b54\u6848\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as = \"cbbd\"\n\u8f93\u51fa\uff1a\"bb\"\n<\/code><\/pre>\n<h3 id=\"\u4ea4\u9519\u5b57\u7b26\u4e32\">\u4ea4\u9519\u5b57\u7b26\u4e32<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-168\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e09\u4e2a\u5b57\u7b26\u4e32 <code>s1<\/code>\u3001<code>s2<\/code>\u3001<code>s3<\/code>\uff0c\u8bf7\u4f60\u5e2e\u5fd9\u9a8c\u8bc1 <code>s3<\/code> \u662f\u5426\u662f\u7531 <code>s1<\/code> \u548c <code>s2<\/code> <strong>\u4ea4\u9519<\/strong> \u7ec4\u6210\u7684\u3002<\/p>\n<p>\u4e24\u4e2a\u5b57\u7b26\u4e32 <code>s<\/code> \u548c <code>t<\/code> <strong>\u4ea4\u9519<\/strong> \u7684\u5b9a\u4e49\u4e0e\u8fc7\u7a0b\u5982\u4e0b\uff0c\u5176\u4e2d\u6bcf\u4e2a\u5b57\u7b26\u4e32\u90fd\u4f1a\u88ab\u5206\u5272\u6210\u82e5\u5e72 <strong>\u975e\u7a7a<\/strong><\/p>\n<p>\u5b50\u5b57\u7b26\u4e32<\/p>\n<p>\uff1a<\/p>\n<ul>\n<li><code>s = s1 + s2 + ... + sn<\/code><\/li>\n<li><code>t = t1 + t2 + ... + tm<\/code><\/li>\n<li><code>|n - m| &lt;= 1<\/code><\/li>\n<li><strong>\u4ea4\u9519<\/strong> \u662f <code>s1 + t1 + s2 + t2 + s3 + t3 + ...<\/code> \u6216\u8005 <code>t1 + s1 + t2 + s2 + t3 + s3 + ...<\/code><\/li>\n<\/ul>\n<p><strong>\u6ce8\u610f\uff1a<\/strong><code>a + b<\/code> \u610f\u5473\u7740\u5b57\u7b26\u4e32 <code>a<\/code> \u548c <code>b<\/code> \u8fde\u63a5\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-149\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-169\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;string&gt;\n#include &lt;vector&gt;\n#include &lt;functional&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    bool isInterleave(string s1, string s2, string s3) {\n        int n = s1.size(), m = s2.size();\n        if (n + m != s3.size()) return false;\n        \/\/\u7279\u5224\n        if (n == 0) return s2 == s3;\n        if (m == 0) return s1 == s3;\n        int memo[n][m];\n        memset(memo, -1, sizeof(memo));\n        function&lt;bool(int, int)&gt; dfs = [&amp;](int i, int j) -&gt; bool {\n            \/\/\u5982\u679cs1\u5224\u65ad\u5b8c\u4e86\uff0c\u5224\u65ad\u5269\u4f59\u7684s2\u662f\u5426\u6ee1\u8db3\u6761\u4ef6\n            if (i &lt; 0) {\n                for (int k = 0; k &lt;= j; k++) {\n                    if (s2[k] != s3[k]) return false;\n                }\n                return true;\n            }\n            \/\/\u5982\u679cs2\u5224\u65ad\u5b8c\u4e86\uff0c\u5224\u65ad\u5269\u4f59\u7684s1\u662f\u5426\u6ee1\u8db3\u6761\u4ef6\n            if (j &lt; 0) {\n                for (int k = 0; k &lt;= i; k++) {\n                    if (s1[k] != s3[k]) return false;\n                }\n                return true;\n            }\n            if (memo[i][j] != -1) return memo[i][j];\n            return memo[i][j] = (s1[i] == s3[i + j + 1] &amp;&amp; dfs(i - 1, j))\n                || (s2[j] == s3[i + j + 1] &amp;&amp; dfs(i, j - 1));\n            };\n        return dfs(n - 1, m - 1);\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/09\/02\/interleave.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/09\/02\/interleave.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1as1 = \"aabcc\", s2 = \"dbbca\", s3 = \"aadbbcbcac\"\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as1 = \"aabcc\", s2 = \"dbbca\", s3 = \"aadbbbaccc\"\n\u8f93\u51fa\uff1afalse\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1as1 = \"\", s2 = \"\", s3 = \"\"\n\u8f93\u51fa\uff1atrue\n<\/code><\/pre>\n<h3 id=\"\u7f16\u8bd1\u8ddd\u79bb\">\u7f16\u8bd1\u8ddd\u79bb<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-169\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e24\u4e2a\u5355\u8bcd <code>word1<\/code> \u548c <code>word2<\/code>\uff0c <em>\u8bf7\u8fd4\u56de\u5c06 <code>word1<\/code> \u8f6c\u6362\u6210 <code>word2<\/code> \u6240\u4f7f\u7528\u7684\u6700\u5c11\u64cd\u4f5c\u6570<\/em> \u3002<\/p>\n<p>\u4f60\u53ef\u4ee5\u5bf9\u4e00\u4e2a\u5355\u8bcd\u8fdb\u884c\u5982\u4e0b\u4e09\u79cd\u64cd\u4f5c\uff1a<\/p>\n<ul>\n<li>\u63d2\u5165\u4e00\u4e2a\u5b57\u7b26<\/li>\n<li>\u5220\u9664\u4e00\u4e2a\u5b57\u7b26<\/li>\n<li>\u66ff\u6362\u4e00\u4e2a\u5b57\u7b26<\/li>\n<\/ul>\n<h4 id=\"\u9898\u76ee\u5206\u6790-150\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-170\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;string&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int minDistance(string word1, string word2) {\n        int n = word1.size(), m = word2.size();\n\n        vector&lt;vector&lt;int&gt;&gt; memo(n, vector&lt;int&gt;(m, -1));\n\n        auto dfs = [&amp;](auto&amp;&amp; dfs, int i, int j) -&gt; int {\n            if (i &lt; 0)\n            {\n                return j + 1;\n            }\n            if (j &lt; 0)\n            {\n                return i + 1;\n            }\n\n            int&amp; res = memo[i][j];\n\n            if (memo[i][j] != -1)\n            {\n                return res;\n            }\n\n            if (word1[i] == word2[j])\n            {\n                return res = dfs(dfs, i - 1, j - 1);\n            }\n\n            return res = min(min(dfs(dfs, i - 1, j), dfs(dfs, i, j - 1)), dfs(dfs, i - 1, j - 1) ) + 1;\n        };\n\n        return dfs(dfs, n - 1, m - 1);\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aword1 = \"horse\", word2 = \"ros\"\n\u8f93\u51fa\uff1a3\n\u89e3\u91ca\uff1a\nhorse -&gt; rorse (\u5c06 'h' \u66ff\u6362\u4e3a 'r')\nrorse -&gt; rose (\u5220\u9664 'r')\nrose -&gt; ros (\u5220\u9664 'e')\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aword1 = \"intention\", word2 = \"execution\"\n\u8f93\u51fa\uff1a5\n\u89e3\u91ca\uff1a\nintention -&gt; inention (\u5220\u9664 't')\ninention -&gt; enention (\u5c06 'i' \u66ff\u6362\u4e3a 'e')\nenention -&gt; exention (\u5c06 'n' \u66ff\u6362\u4e3a 'x')\nexention -&gt; exection (\u5c06 'n' \u66ff\u6362\u4e3a 'c')\nexection -&gt; execution (\u63d2\u5165 'u')\n<\/code><\/pre>\n<h3 id=\"\u4e70\u5356\u80a1\u7968\u7684\u6700\u4f73\u65f6\u673a\u2172\">\u4e70\u5356\u80a1\u7968\u7684\u6700\u4f73\u65f6\u673a\u2162<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-170\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u5b9a\u4e00\u4e2a\u6570\u7ec4\uff0c\u5b83\u7684\u7b2c <code>i<\/code> \u4e2a\u5143\u7d20\u662f\u4e00\u652f\u7ed9\u5b9a\u7684\u80a1\u7968\u5728\u7b2c <code>i<\/code> \u5929\u7684\u4ef7\u683c\u3002<\/p>\n<p>\u8bbe\u8ba1\u4e00\u4e2a\u7b97\u6cd5\u6765\u8ba1\u7b97\u4f60\u6240\u80fd\u83b7\u53d6\u7684\u6700\u5927\u5229\u6da6\u3002\u4f60\u6700\u591a\u53ef\u4ee5\u5b8c\u6210 <strong>\u4e24\u7b14<\/strong> \u4ea4\u6613\u3002<\/p>\n<p><strong>\u6ce8\u610f\uff1a<\/strong>\u4f60\u4e0d\u80fd\u540c\u65f6\u53c2\u4e0e\u591a\u7b14\u4ea4\u6613\uff08\u4f60\u5fc5\u987b\u5728\u518d\u6b21\u8d2d\u4e70\u524d\u51fa\u552e\u6389\u4e4b\u524d\u7684\u80a1\u7968\uff09\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-151\">\u9898\u76ee\u5206\u6790<\/h4>\n<p>\u770b\u9898\u89e3\u5427\uff0c\u672c\u9898\u76f8\u5f53\u4e8e\u6709\u56db\u4e2a\u4e0d\u540c\u7684\u72b6\u6001\uff0c\u6211\u4eec\u5047\u8bbe\u5728\u7b2c\u4e00\u5929\u8d2d\u5165\uff0c\u552e\u51fa\u4e24\u6b21\uff0c\u6240\u4ee5\u7b2c\u4e00\u5929\u6211\u4eec\u521d\u59cb\u5316\u4e3a-prices[0],0<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-171\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    int maxProfit(vector&lt;int&gt;&amp; prices) {\n        int n = prices.size();\n\n        int buy1 = -prices[0];\n        int sell1 = 0;\n        int buy2 = -prices[0];\n        int sell2 = 0;\n\n        for (int i = 1; i &lt;= n; i++)\n        {\n            buy1 = max(buy1, -prices[i - 1]);\n            sell1 = max(sell1, buy1 + prices[i - 1]);\n            buy2 = max(buy2, sell1 - prices[i - 1]);\n            sell2 = max(sell2, buy2 + prices[i - 1]);\n        }\n\n\n        return sell2;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1:<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aprices = [3,3,5,0,0,3,1,4]\n\u8f93\u51fa\uff1a6\n\u89e3\u91ca\uff1a\u5728\u7b2c 4 \u5929\uff08\u80a1\u7968\u4ef7\u683c = 0\uff09\u7684\u65f6\u5019\u4e70\u5165\uff0c\u5728\u7b2c 6 \u5929\uff08\u80a1\u7968\u4ef7\u683c = 3\uff09\u7684\u65f6\u5019\u5356\u51fa\uff0c\u8fd9\u7b14\u4ea4\u6613\u6240\u80fd\u83b7\u5f97\u5229\u6da6 = 3-0 = 3 \u3002\n     \u968f\u540e\uff0c\u5728\u7b2c 7 \u5929\uff08\u80a1\u7968\u4ef7\u683c = 1\uff09\u7684\u65f6\u5019\u4e70\u5165\uff0c\u5728\u7b2c 8 \u5929 \uff08\u80a1\u7968\u4ef7\u683c = 4\uff09\u7684\u65f6\u5019\u5356\u51fa\uff0c\u8fd9\u7b14\u4ea4\u6613\u6240\u80fd\u83b7\u5f97\u5229\u6da6 = 4-1 = 3 \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aprices = [1,2,3,4,5]\n\u8f93\u51fa\uff1a4\n\u89e3\u91ca\uff1a\u5728\u7b2c 1 \u5929\uff08\u80a1\u7968\u4ef7\u683c = 1\uff09\u7684\u65f6\u5019\u4e70\u5165\uff0c\u5728\u7b2c 5 \u5929 \uff08\u80a1\u7968\u4ef7\u683c = 5\uff09\u7684\u65f6\u5019\u5356\u51fa, \u8fd9\u7b14\u4ea4\u6613\u6240\u80fd\u83b7\u5f97\u5229\u6da6 = 5-1 = 4 \u3002   \n     \u6ce8\u610f\u4f60\u4e0d\u80fd\u5728\u7b2c 1 \u5929\u548c\u7b2c 2 \u5929\u63a5\u8fde\u8d2d\u4e70\u80a1\u7968\uff0c\u4e4b\u540e\u518d\u5c06\u5b83\u4eec\u5356\u51fa\u3002   \n     \u56e0\u4e3a\u8fd9\u6837\u5c5e\u4e8e\u540c\u65f6\u53c2\u4e0e\u4e86\u591a\u7b14\u4ea4\u6613\uff0c\u4f60\u5fc5\u987b\u5728\u518d\u6b21\u8d2d\u4e70\u524d\u51fa\u552e\u6389\u4e4b\u524d\u7684\u80a1\u7968\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aprices = [7,6,4,3,1] \n\u8f93\u51fa\uff1a0 \n\u89e3\u91ca\uff1a\u5728\u8fd9\u4e2a\u60c5\u51b5\u4e0b, \u6ca1\u6709\u4ea4\u6613\u5b8c\u6210, \u6240\u4ee5\u6700\u5927\u5229\u6da6\u4e3a 0\u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 4\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1aprices = [1]\n\u8f93\u51fa\uff1a0\n<\/code><\/pre>\n<h3 id=\"\u4e70\u5356\u80a1\u7968\u7684\u6700\u4f73\u65f6\u673a\u2173\">\u4e70\u5356\u80a1\u7968\u7684\u6700\u4f73\u65f6\u673a\u2163<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-171\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>prices<\/code> \u548c\u4e00\u4e2a\u6574\u6570 <code>k<\/code> \uff0c\u5176\u4e2d <code>prices[i]<\/code> \u662f\u67d0\u652f\u7ed9\u5b9a\u7684\u80a1\u7968\u5728\u7b2c <code>i<\/code> \u5929\u7684\u4ef7\u683c\u3002<\/p>\n<p>\u8bbe\u8ba1\u4e00\u4e2a\u7b97\u6cd5\u6765\u8ba1\u7b97\u4f60\u6240\u80fd\u83b7\u53d6\u7684\u6700\u5927\u5229\u6da6\u3002\u4f60\u6700\u591a\u53ef\u4ee5\u5b8c\u6210 <code>k<\/code> \u7b14\u4ea4\u6613\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u4f60\u6700\u591a\u53ef\u4ee5\u4e70 <code>k<\/code> \u6b21\uff0c\u5356 <code>k<\/code> \u6b21\u3002<\/p>\n<p><strong>\u6ce8\u610f\uff1a<\/strong>\u4f60\u4e0d\u80fd\u540c\u65f6\u53c2\u4e0e\u591a\u7b14\u4ea4\u6613\uff08\u4f60\u5fc5\u987b\u5728\u518d\u6b21\u8d2d\u4e70\u524d\u51fa\u552e\u6389\u4e4b\u524d\u7684\u80a1\u7968\uff09\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-152\">\u9898\u76ee\u5206\u6790<\/h4>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-172\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;array&gt;\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int maxProfit(int k, vector&lt;int&gt;&amp; prices) {\n        int n = prices.size();\n        vector&lt;vector&lt;array&lt;int, 2&gt;&gt;&gt; memo(n, vector&lt;array&lt;int, 2&gt;&gt;(k + 1, { -1, -1 })); \/\/ -1 \u8868\u793a\u8fd8\u6ca1\u6709\u8ba1\u7b97\u8fc7\n        auto dfs = [&amp;](auto&amp;&amp; dfs, int i, int j, bool hold) -&gt; int {\n            if (j &lt; 0) {\n                return INT_MIN \/ 2; \/\/ \u9664 2 \u9632\u6b62\u6ea2\u51fa\n            }\n            if (i &lt; 0) {\n                return hold ? INT_MIN \/ 2 : 0;\n            }\n            int&amp; res = memo[i][j][hold]; \/\/ \u6ce8\u610f\u8fd9\u91cc\u662f\u5f15\u7528\n            if (res != -1) { \/\/ \u4e4b\u524d\u8ba1\u7b97\u8fc7\n                return res;\n            }\n            if (hold) {\n                return res = max(dfs(dfs, i - 1, j, true), dfs(dfs, i - 1, j - 1, false) - prices[i]);\n            }\n            return res = max(dfs(dfs, i - 1, j, false), dfs(dfs, i - 1, j, true) + prices[i]);\n            };\n        return dfs(dfs, n - 1, k, false);\n    }\n};\n\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ak = 2, prices = [2,4,1]\n\u8f93\u51fa\uff1a2\n\u89e3\u91ca\uff1a\u5728\u7b2c 1 \u5929 (\u80a1\u7968\u4ef7\u683c = 2) \u7684\u65f6\u5019\u4e70\u5165\uff0c\u5728\u7b2c 2 \u5929 (\u80a1\u7968\u4ef7\u683c = 4) \u7684\u65f6\u5019\u5356\u51fa\uff0c\u8fd9\u7b14\u4ea4\u6613\u6240\u80fd\u83b7\u5f97\u5229\u6da6 = 4-2 = 2 \u3002\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1ak = 2, prices = [3,2,6,5,0,3]\n\u8f93\u51fa\uff1a7\n\u89e3\u91ca\uff1a\u5728\u7b2c 2 \u5929 (\u80a1\u7968\u4ef7\u683c = 2) \u7684\u65f6\u5019\u4e70\u5165\uff0c\u5728\u7b2c 3 \u5929 (\u80a1\u7968\u4ef7\u683c = 6) \u7684\u65f6\u5019\u5356\u51fa, \u8fd9\u7b14\u4ea4\u6613\u6240\u80fd\u83b7\u5f97\u5229\u6da6 = 6-2 = 4 \u3002\n     \u968f\u540e\uff0c\u5728\u7b2c 5 \u5929 (\u80a1\u7968\u4ef7\u683c = 0) \u7684\u65f6\u5019\u4e70\u5165\uff0c\u5728\u7b2c 6 \u5929 (\u80a1\u7968\u4ef7\u683c = 3) \u7684\u65f6\u5019\u5356\u51fa, \u8fd9\u7b14\u4ea4\u6613\u6240\u80fd\u83b7\u5f97\u5229\u6da6 = 3-0 = 3 \u3002\n<\/code><\/pre>\n<h3 id=\"\u6700\u5927\u6b63\u65b9\u5f62\">\u6700\u5927\u6b63\u65b9\u5f62<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-172\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u5728\u4e00\u4e2a\u7531 <code>'0'<\/code> \u548c <code>'1'<\/code> \u7ec4\u6210\u7684\u4e8c\u7ef4\u77e9\u9635\u5185\uff0c\u627e\u5230\u53ea\u5305\u542b <code>'1'<\/code> \u7684\u6700\u5927\u6b63\u65b9\u5f62\uff0c\u5e76\u8fd4\u56de\u5176\u9762\u79ef\u3002<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-153\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><code>memo[i][j] = 1 + min(memo[i - 1][j - 1], min(memo[i][j - 1], memo[i - 1][j]));<\/code><\/p>\n<p>\u8fd9\u91cc\u8981\u52a0\u4e00\u7684\u539f\u56e0\u662f\u8981\u8003\u8651\uff0c\u81ea\u8eab\u53ef\u4ee5\u6784\u5efa\u4e00\u4e2a1*1\u7684\u5c0f\u6b63\u65b9\u5f62<\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-173\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n\nusing namespace std;\n\n\nclass Solution {\npublic:\n    int maximalSquare(vector&lt;vector&lt;char&gt;&gt;&amp; matrix) {\n\n        int n = matrix.size(); \/\/ i row \n        int m = matrix[0].size(); \/\/ j column\n\n        int maxSide = 0;\n\n        vector&lt;vector&lt;int&gt;&gt; memo(n, vector&lt;int&gt;(m));\n\n        for (int j = 0; j &lt; m; j++)\n        {\n            memo[0][j] = matrix[0][j] - '0';\n            maxSide = max(maxSide, memo[0][j]);\n        }\n\n        for (int i = 0; i &lt; n; i++)\n        {\n            memo[i][0] = matrix[i][0] - '0';\n            maxSide = max(maxSide, memo[i][0]);\n        }\n\n        for (int i = 1; i &lt; n; i++)\n        {\n            for (int j = 1; j &lt; m; j++)\n            {\n                if (matrix[i][j] == '0') continue;\n\n                memo[i][j] = 1 + min(memo[i - 1][j - 1], min(memo[i][j - 1], memo[i - 1][j]));\n                maxSide = max(maxSide, memo[i][j]);\n            }\n        }\n\n        return maxSide * maxSide;\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/26\/max1grid.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/26\/max1grid.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1amatrix = [[\"1\",\"0\",\"1\",\"0\",\"0\"],[\"1\",\"0\",\"1\",\"1\",\"1\"],[\"1\",\"1\",\"1\",\"1\",\"1\"],[\"1\",\"0\",\"0\",\"1\",\"0\"]]\n\u8f93\u51fa\uff1a4\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/assets.leetcode.com\/uploads\/2020\/11\/26\/max2grid.jpg'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/assets.leetcode.com\/uploads\/2020\/11\/26\/max2grid.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\" \/><\/div><\/p>\n<pre><code>\u8f93\u5165\uff1amatrix = [[\"0\",\"1\"],[\"1\",\"0\"]]\n\u8f93\u51fa\uff1a1\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 3\uff1a<\/strong><\/p>\n<pre><code>\u8f93\u5165\uff1amatrix = [[\"0\"]]\n\u8f93\u51fa\uff1a0\n<\/code><\/pre>\n<h3 id=\"\u6c42\u51fa\u6700\u957f\u597d\u5b50\u5e8f\u5217\u2171\">\u6c42\u51fa\u6700\u957f\u597d\u5b50\u5e8f\u5217\u2161<\/h3>\n<h4 id=\"\u9898\u76ee\u63cf\u8ff0-173\">\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 <code>nums<\/code> \u548c\u4e00\u4e2a <strong>\u975e\u8d1f<\/strong> \u6574\u6570 <code>k<\/code> \u3002\u5982\u679c\u4e00\u4e2a\u6574\u6570\u5e8f\u5217 <code>seq<\/code> \u6ee1\u8db3\u5728\u8303\u56f4\u4e0b\u6807\u8303\u56f4 <code>[0, seq.length - 2]<\/code> \u4e2d\u5b58\u5728 <strong>\u4e0d\u8d85\u8fc7<\/strong> <code>k<\/code> \u4e2a\u4e0b\u6807 <code>i<\/code> \u6ee1\u8db3 <code>seq[i] != seq[i + 1]<\/code> \uff0c\u90a3\u4e48\u6211\u4eec\u79f0\u8fd9\u4e2a\u6574\u6570\u5e8f\u5217\u4e3a <strong>\u597d<\/strong> \u5e8f\u5217\u3002<\/p>\n<p>\u8bf7\u4f60\u8fd4\u56de <code>nums<\/code> \u4e2d <strong>\u597d<\/strong><\/p>\n<p>\u5b50\u5e8f\u5217<\/p>\n<p>\u7684\u6700\u957f\u957f\u5ea6<\/p>\n<h4 id=\"\u9898\u76ee\u5206\u6790-154\">\u9898\u76ee\u5206\u6790<\/h4>\n<p><a href=\"https:\/\/leetcode.cn\/problems\/find-the-maximum-length-of-a-good-subsequence-ii\/solutions\/2805263\/dong-tai-gui-hua-you-hua-pythonjavacgo-b-jqn2\/\">3177. \u6c42\u51fa\u6700\u957f\u597d\u5b50\u5e8f\u5217 II &#8211; \u529b\u6263\uff08LeetCode\uff09<\/a><\/p>\n<h4 id=\"\u9898\u76ee\u4ee3\u7801-174\">\u9898\u76ee\u4ee3\u7801<\/h4>\n<pre><code class=\"language-cpp\" lang=\"cpp\">#include &lt;vector&gt;\n#include &lt;unordered_map&gt;\n\n\nusing namespace std;\n\nclass Solution {\npublic:\n    int maximumLength(vector&lt;int&gt;&amp; nums, int k) {\n        unordered_map&lt;int, vector&lt;int&gt;&gt; fs;\n        vector&lt;int&gt; mx(k + 2);\n        for (int x : nums)\n        {\n            auto&amp; f = fs[x];\n            f.resize(k + 1);\n            for (int i = k; i &gt;= 0; i--)\n            {\n                f[i] = max(f[i], mx[i]) + 1;\n                mx[i + 1] = max(mx[i + 1], f[i]);\n            }\n        }\n\n        return mx[k + 1];\n    }\n};\n<\/code><\/pre>\n<p><strong>\u793a\u4f8b 1\uff1a<\/strong><\/p>\n<p><strong>\u8f93\u5165\uff1a<\/strong>nums = [1,2,1,1,3], k = 2<\/p>\n<p><strong>\u8f93\u51fa\uff1a<\/strong>4<\/p>\n<p><strong>\u89e3\u91ca\uff1a<\/strong><\/p>\n<p>\u6700\u957f\u597d\u5b50\u5e8f\u5217\u4e3a <code>[1,2,1,1,3]<\/code> \u3002<\/p>\n<p><strong>\u793a\u4f8b 2\uff1a<\/strong><\/p>\n<p><strong>\u8f93\u5165\uff1a<\/strong>nums = [1,2,3,4,5,1], k = 0<\/p>\n<p><strong>\u8f93\u51fa\uff1a<\/strong>2<\/p>\n<p><strong>\u89e3\u91ca\uff1a<\/strong><\/p>\n<p>\u6700\u957f\u597d\u5b50\u5e8f\u5217\u4e3a <code>[1,2,3,4,5,1]<\/code> \u3002<\/p>\n<p><strong>\u63d0\u793a\uff1a<\/strong><\/p>\n<ul>\n<li><code>1 &lt;= nums.length &lt;= 5 * 103<\/code><\/li>\n<li><code>1 &lt;= nums[i] &lt;= 109<\/code><\/li>\n<li><code>0 &lt;= k &lt;= min(50, nums.length)<\/code><\/li>\n<\/ul>\n<h2 id=\"\u901a\u7528\u6a21\u677f\">\u901a\u7528\u6a21\u677f<\/h2>\n<h3 id=\"\u5b57\u7b26\u4e32\u53e5\u5b50\">\u5b57\u7b26\u4e32\u53e5\u5b50<\/h3>\n<p>\u6a21\u677f\u4ee3\u7801<br \/>\n\u8fd9\u7c7b\u9898\u76ee\u53ef\u4ee5\u5206\u4e3a\u4e24\u7c7b\uff0c\u4e00\u7c7b\u662f\u6709\u524d\u7f6e\u6216\u8005\u540e\u7f6e\u7a7a\u683c\u7684\uff0c\u53e6\u4e00\u7c7b\u662f\u6ca1\u6709\u524d\u7f6e\u548c\u540e\u7f6e\u7a7a\u683c\u7684\u3002<br \/>\n1\u3001\u5982\u679c\u6709\u524d\u540e\u7f6e\u7a7a\u683c\uff0c\u90a3\u4e48\u5fc5\u987b\u5224\u65ad\u4e34\u65f6\u5b57\u7b26\u4e32\u975e\u7a7a\u624d\u80fd\u8f93\u51fa\uff0c\u5426\u5219\u4f1a\u8f93\u51fa\u7a7a\u4e32<br \/>\n\u6a21\u677f\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">s += \" \"; \/\/\u8fd9\u91cc\u5728\u6700\u540e\u4e00\u4e2a\u5b57\u7b26\u4f4d\u7f6e\u52a0\u4e0a\u7a7a\u683c\uff0c\u8fd9\u6837\u6700\u540e\u4e00\u4e2a\u5b57\u7b26\u4e32\u5c31\u4e0d\u4f1a\u9057\u6f0f\nstring temp = \"\";  \/\/\u4e34\u65f6\u5b57\u7b26\u4e32\nvector&lt;string&gt; res; \/\/\u5b58\u653e\u5b57\u7b26\u4e32\u7684\u6570\u7ec4\nfor (char ch : s)  \/\/\u904d\u5386\u5b57\u7b26\u53e5\u5b50\n{\n    if (ch == ' ') \/\/\u9047\u5230\u7a7a\u683c\n    {\n        if (!temp.empty()) \/\/\u4e34\u65f6\u5b57\u7b26\u4e32\u975e\u7a7a\n        {\n            res.push_back(temp);\n            temp.clear();  \/\/\u6e05\u7a7a\u4e34\u65f6\u5b57\u7b26\u4e32\n        }\n    }\n    else\n        temp += ch; \n}\n<\/code><\/pre>\n<p>2\u3001\u6ca1\u6709\u524d\u540e\u7f6e\u7684\u7a7a\u683c\u4e0d\u9700\u8981\u5224\u65ad\u7a7a\u4e32<\/p>\n<pre><code class=\"language-cpp\" lang=\"cpp\">s += \" \";\n    string temp = \"\";\n    vector&lt;string&gt; res;\n    for (char ch : s)\n    {\n        if (ch == ' ')\n        {\n            res.push_back(temp);\n            temp.clear();\n        }\n        else\n            temp += ch;\n    }\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Rick\u7684\u5237\u9898\u4e4b\u8def \u54c8\u5e0c\u8868 \u4e24\u6570\u4e4b\u548c \u9898\u76ee\u63cf\u8ff0 \u7ed9\u5b9a\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 nums \u548c\u4e00\u4e2a\u76ee\u6807\u503c target\uff0c\u8bf7\u4f60\u5728 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,16],"tags":[14,12],"class_list":["post-255","post","type-post","status-publish","format-standard","hentry","category-15","category-16","tag-14","tag-12"],"_links":{"self":[{"href":"https:\/\/www.vanforever.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vanforever.com.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vanforever.com.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vanforever.com.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vanforever.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=255"}],"version-history":[{"count":41,"href":"https:\/\/www.vanforever.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/255\/revisions"}],"predecessor-version":[{"id":498,"href":"https:\/\/www.vanforever.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/255\/revisions\/498"}],"wp:attachment":[{"href":"https:\/\/www.vanforever.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vanforever.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vanforever.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}