{"id":3182,"date":"2025-05-06T23:50:35","date_gmt":"2025-05-06T15:50:35","guid":{"rendered":"https:\/\/www.haruhi.fans\/?p=3182"},"modified":"2025-05-06T23:50:35","modified_gmt":"2025-05-06T15:50:35","slug":"%e5%8a%9b%e6%89%a3%e5%bf%85%e5%88%b7%e9%a2%98","status":"publish","type":"post","link":"https:\/\/www.haruhi.fans\/?p=3182","title":{"rendered":"\u529b\u6263\u5fc5\u5237\u9898"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u9898\u76ee\u90fd\u662fhot100\uff0c\u8bb0\u5f55\u505a\u9898\u5fc3\u5f97\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e24\u6570\u4e4b\u548c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u5b9a\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 nums&nbsp;\u548c\u4e00\u4e2a\u6574\u6570\u76ee\u6807\u503c target\uff0c\u8bf7\u4f60\u5728\u8be5\u6570\u7ec4\u4e2d\u627e\u51fa \u548c\u4e3a\u76ee\u6807\u503c target&nbsp; \u7684\u90a3&nbsp;\u4e24\u4e2a&nbsp;\u6574\u6570\uff0c\u5e76\u8fd4\u56de\u5b83\u4eec\u7684\u6570\u7ec4\u4e0b\u6807\u3002<br>\u4f60\u53ef\u4ee5\u5047\u8bbe\u6bcf\u79cd\u8f93\u5165\u53ea\u4f1a\u5bf9\u5e94\u4e00\u4e2a\u7b54\u6848\uff0c\u5e76\u4e14\u4f60\u4e0d\u80fd\u4f7f\u7528\u4e24\u6b21\u76f8\u540c\u7684\u5143\u7d20\u3002<br>\u4f60\u53ef\u4ee5\u6309\u4efb\u610f\u987a\u5e8f\u8fd4\u56de\u7b54\u6848\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u663e\u800c\u6613\u89c1\u66b4\u529b\u65b9\u6cd5\uff0c\u53cc\u5c42\u5faa\u73af\u3002\u6709\u4e00\u4e9b\u4f18\u5316\u7684\u70b9\uff0c\u6bd4\u5982\u6700\u5927\u6570\u8d85\u8fc7target\u5c31\u53bb\u6389\uff0c\u4e0d\u8fc7\u4e0d\u5f71\u54cd\u590d\u6742\u5ea6\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vector&lt;int&gt; twoSum(vector&lt;int&gt;&amp; nums, int target) {\n        vector&lt;int&gt; v;\n        for(int i = 0 ; i &lt; nums.size() - 1 ; i++){\n            for(int j = i + 1 ; j &lt; nums.size() ; j++){\n                if(nums&#91;i] + nums&#91;j] == target){\n                    v = { i , j};\n                    return v;\n                }\n            }\n        }\n        return v;\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed3\u679c\u6bd4\u8f83\u597d\u7684\u662f\u54c8\u5e0c\u8868\uff0c\u57fa\u672c\u539f\u7406\u5c31\u662f  \u5bf9\u4e8e\u6bcf\u4e00\u4e2ax\uff0c\u6211\u4eec\u9996\u5148\u67e5\u8be2\u54c8\u5e0c\u8868\u4e2d\u662f\u5426\u5b58\u5728target &#8211; x\uff0c\u7136\u540e\u5c06x\u63d2\u5165\u5230\u54c8\u5e0c\u8868\u4e2d\uff0c\u5373\u53ef\u4fdd\u8bc1\u4e0d\u4f1a\u8ba9x\u548c\u81ea\u5df1\u5339\u914d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">tip:map\u548cunordered_map<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">map\uff1a\u5e95\u5c42\u7ea2\u9ed1\u6811<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">unorder_map\uff1a\u6563\u5217\u8868<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-44.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"659\" height=\"500\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-44.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3184\"  sizes=\"auto, (max-width: 659px) 100vw, 659px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>vector&lt;int&gt; twoSum(vector&lt;int&gt;&amp; nums, int target) {\n        \/\/\u521b\u5efa\u54c8\u5e0c\u8868\n        unordered_map&lt;int, int&gt; hashtable;\n        for(int i = 0 ; i &lt; nums.size() ; i++){\n            \/\/ \u8fd4\u56de\u503c\u662f\u7b2c\u4e8c\u4e2a\u6570\uff0c\u5982\u679c\u8d70\u5230\u6700\u540e\uff0c\u5219\u8bf4\u660e\u4e0d\u5b58\u5728\n            auto it = hashtable.find(target - nums&#91;i]);\n            if(it != hashtable.end()){\n                return {hashtable&#91;target-nums&#91;i]], i};\n            }\n            \/\/ \u4e0d\u5b58\u5728\u52a0\u5165\u6563\u5217\u8868\n            hashtable&#91;nums&#91;i]] = i;\n        }\n         \/\/ c++\u8981\u6c42\u5fc5\u987b\u6700\u540e\u6709\u8fd4\u56de\n        return {};\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u5b57\u6bcd\u5f02\u4f4d\u8bcd\u5206\u7ec4<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32\u6570\u7ec4\uff0c\u8bf7\u4f60\u5c06&nbsp;<strong>\u5b57\u6bcd\u5f02\u4f4d\u8bcd<\/strong>&nbsp;\u7ec4\u5408\u5728\u4e00\u8d77\u3002\u53ef\u4ee5\u6309\u4efb\u610f\u987a\u5e8f\u8fd4\u56de\u7ed3\u679c\u5217\u8868\u3002<strong>\u5b57\u6bcd\u5f02\u4f4d\u8bcd<\/strong>&nbsp;\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\n\n\n<p class=\"wp-block-paragraph\">\u601d\u8def\u5927\u6982\u6709\u76f4\u63a5\u7684\u54c8\u5e0c\uff0c\u5148\u628a\u5b57\u6bcd\u90fd\u62c6\u5f00\u6309\u987a\u5e8f\u6392\u597d\u3002\u6700\u540e\u904d\u5386\u4e00\u904d\u5c31\u662f\u7b54\u6848\u3002\u91cd\u70b9\u5927\u6982\u8bb0\u4e00\u4e0b\u8bed\u6cd5\uff0c\u6bd4\u5982 string\u6392\u5e8fsort(key.begin() , key.end());  emplace_back\u7684\u7528\u6cd5\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vector&lt;vector&lt;string&gt;&gt; groupAnagrams(vector&lt;string&gt;&amp; strs) {\n        \/\/ key \u662f\u6392\u597d\u5e8f\u7684\uff0c\u540e\u9762\u662f\u5176\u5b83\u4e71\u5e8f\u7684\n        unordered_map&lt;string , vector&lt;string&gt;&gt; mp ;\n        for (auto str :strs){\n            string key = str;\n            sort(key.begin() , key.end());\n            \/\/ \u5982\u679c key \u5df2\u7ecf\u5b58\u5728\uff0cemplace_back \u4f1a\u628a str \u6dfb\u52a0\u5230\u4e0e key \u5bf9\u5e94\u7684 vector&lt;string&gt; \u4e2d\u3002\n            \/\/ \u5982\u679c key \u4e0d\u5b58\u5728\uff0cmp&#91;key] \u4f1a\u81ea\u52a8\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u7a7a vector&lt;string&gt;\uff0c\u5e76\u5c06 str \u6dfb\u52a0\u8fdb\u53bb\u3002\n            mp&#91;key].emplace_back(str);\n        }\n\n        vector&lt;vector&lt;string&gt;&gt; answer;\n        for(auto it = mp.begin() ; it != mp.end() ; it++){\n            answer.emplace_back(it-&gt;second);\n        }\n\n        return answer;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u6700\u957f\u8fde\u7eed\u5e8f\u5217<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u5b9a\u4e00\u4e2a\u672a\u6392\u5e8f\u7684\u6574\u6570\u6570\u7ec4&nbsp;<code>nums<\/code>&nbsp;\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\u8bf7\u4f60\u8bbe\u8ba1\u5e76\u5b9e\u73b0\u65f6\u95f4\u590d\u6742\u5ea6\u4e3a&nbsp;<code>O(n)<\/code><em>&nbsp;<\/em>\u7684\u7b97\u6cd5\u89e3\u51b3\u6b64\u95ee\u9898\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u663e\u800c\u6613\u89c1\uff0c\u6392\u5e8fo\uff08logn\uff09\uff0c\u8fd9\u6761\u8def\u5df2\u7ecf\u5835\u6b7b\u4e86<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int longestConsecutive(vector&lt;int&gt;&amp; nums) {\n        int max_len = 0;\n        int length = nums.size();\n        unordered_map&lt;int , int&gt; mp;\n        for(int i = 0 ; i &lt; length ; i++){\n            mp&#91;nums&#91;i]] = i;\n        }\n\n        for(int i = 0 ; i &lt; length ; i++){\n            int current_len = 0;\n            int start = nums&#91;i];\n            \/\/ \u627e\u5230\u6700\u524d\u9762\n            while(mp.find(start - 1) != mp.end()){\n                start -= 1;\n            }\n            \/\/ \u4ece\u6700\u524d\u9762\u5f80\u540e\u7edf\u8ba1\uff0c\u770b\u591a\u957f\n            while(mp.find(start)!= mp.end()){\n                start += 1;\n                current_len += 1;\n            }\n            max_len = current_len &gt; max_len ? current_len : max_len;\n        }\n        return max_len;\n    }\n};<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">then<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    int longestConsecutive(vector&lt;int&gt;&amp; nums) {\n        int max_len = 0;\n        unordered_map&lt;int , int&gt; mp;\n        \/\/ \u5148\u628a\u6bcf\u4e00\u4e2a\u5143\u7d20\u90fd\u63d2\u5165\u6563\u5217\u8868\uff0c\u4fbf\u4e8eO(1)\u770b\u662f\u5426\u5b58\u5728\n        for(int i = 0 ; i &lt; nums.size() ; i++){\n            mp&#91;nums&#91;i]] = i;\n        }\n\n        for(auto &amp;num : nums){\n            \/\/ \u904d\u5386\u4e00\u904d\uff0c\u5982\u679c\u540e\u9762\u6ca1\u5143\u7d20\u4e86\uff0c\u5219\u8bf4\u660e\u5bf9\u4e86\u3002\n            \/\/ \u627e\u5230\u6700\u524d\u9762\n            if(mp.find(num + 1) == mp.end()){\n                int current_len = 1;\n                while(mp.find(num - current_len) != mp.end()){\n                    current_len += 1;\n                }\n                max_len = current_len &gt; max_len ? current_len : max_len;\n            }\n        }\n        return max_len;\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u9762\u6211\u5176\u5b9e\u611f\u89c9\u5df2\u7ecf\u5f88\u597d\u4e86\uff0c\u4f46\u662f\u6563\u5217\u8868\u5bf9\u4e8e\u76f8\u540c\u6570\u636e\u4e0d\u4f1a\u8986\u76d6\uff0c\u800c\u662f\u94fe\u8868\u4e00\u76f4\u5f80\u540e\u8d70\u3002\u8fd9\u5c31\u5bfc\u81f4\u5f88\u591a\u6d6a\u8d39\u4e86\uff0c\u4e8b\u5b9e\u4e0a\u4e0a\u9762\u4e5f\u8d85\u65f6\u4e86\u3002\u6700\u4f73\u8fd8\u662f\u8981\u7528unorder_set<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int longestConsecutive(vector&lt;int&gt;&amp; nums) {\n        \/\/ \u521b\u5efa\u8fd9\u4e2aset\n        unordered_set&lt;int&gt; num_set;\n        for (const int&amp; num : nums) {\n            num_set.insert(num);\n        } \n        int longestStreak = 0;\n\n        for (const int&amp; num : num_set) {\n            \/\/ \u5982\u679c\u662f\u6700\u540e\u4e00\u4e2a\uff0c\u4ece\u6700\u540e\u5f80\u524d\u7edf\u8ba1\n            if(!num_set.count(num + 1)){\n                int current_len = 1;\n                while(num_set.count(num - current_len)){\n                    current_len ++;\n                }\n                if(current_len &gt; longestStreak) longestStreak = current_len;\n            }\n            }\n        }\n        return longestStreak;           \n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u603b\u7ed3\uff1aset\u548cmap\u533a\u522b\u8c8c\u4f3c\u5c31\u662f\u6709\u6ca1\u6709\u952e\u503c\u5bf9\u3002\u8fd9\u91cc\u4e0d\u9700\u8981value\uff0c\u6240\u4ee5set\u597d\u4e00\u4e9b\u3002<br>set\u63d2\u5165\u7528insert\uff0c\u627e\u7528find\u6216\u8005count\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u79fb\u52a8\u96f6<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u5b9a\u4e00\u4e2a\u6570\u7ec4&nbsp;<code>nums<\/code>\uff0c\u7f16\u5199\u4e00\u4e2a\u51fd\u6570\u5c06\u6240\u6709&nbsp;<code>0<\/code>&nbsp;\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\n\n\n<pre class=\"wp-block-code\"><code>void moveZeroes(vector&lt;int&gt;&amp; nums) {\n        int zero = 0;\n        int not_zero = 1;\n        int length = nums.size();\n        \n        \/\/\u601d\u8def\u662f\uff0c\u4ece\u524d\u5f80\u540e\u627e\n        while(not_zero &lt; length){\n            \/\/\u5982\u679c\u53ef\u4ee5\u4ea4\u6362\u5c31\u4ea4\u6362\n            if(nums&#91;not_zero] != 0 &amp;&amp; nums&#91;zero] == 0){\n                int temp = nums&#91;not_zero] ;\n                nums&#91;not_zero] = nums&#91;zero];\n                nums&#91;zero] = temp;\n            }\n            \/\/\u5148\u627e\u5230\u7b2c\u4e00\u4e2a\u4e3a0\u7684\n            if(nums&#91;zero] != 0) zero++;\n            \/\/\u518d\u5728\u8fd9\u4e2a\u6570\u540e\u9762\u627e\u5230\u7b2c\u4e00\u4e2a\u975e0\u7684\n            if(nums&#91;not_zero] == 0) not_zero++;\n            if(zero &gt;= not_zero) not_zero = zero;\n        }\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b98\u65b9\u7684\u601d\u8def\u4e5f\u633a\u597d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\u610f\u5230\uff1a\u5de6\u6307\u9488\u5de6\u8fb9\u5747\u4e3a\u975e\u96f6\u6570\uff1b\u53f3\u6307\u9488\u5de6\u8fb9\u76f4\u5230\u5de6\u6307\u9488\u5904\u5747\u4e3a\u96f6\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5927\u6982\u5c31\u662f\u53f3\u6307\u9488\u4e00\u76f4\u5411\u53f3\u8f6c\uff0c\u627e\u5230\u4e0b\u4e00\u4e2a\u4e0d\u4e3a0\u7684\u6570\u3002\u5de6\u6307\u9488\u4f1a\u57280\u5904\u505c\u4e0b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void moveZeroes(vector&lt;int&gt;&amp; nums) {\n        int n = nums.size(), left = 0, right = 0;\n        \/\/\u53f3\u6307\u9488\u4e0d\u65ad\u5411\u53f3\u79fb\u52a8\uff0c\u6bcf\u6b21\u53f3\u6307\u9488\u6307\u5411\u975e\u96f6\u6570\uff0c\u5219\u5c06\u5de6\u53f3\u6307\u9488\u5bf9\u5e94\u7684\u6570\u4ea4\u6362\uff0c\u540c\u65f6\u5de6\u6307\u9488\u53f3\u79fb\u3002\n        while (right &lt; n) {\n            if (nums&#91;right]) {\n                swap(nums&#91;left], nums&#91;right]);\n                left++;\n            }\n            right++;\n        }\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u76db\u6700\u591a\u6c34\u7684\u5bb9\u5668<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u5b9a\u4e00\u4e2a\u957f\u5ea6\u4e3a&nbsp;<code>n<\/code>&nbsp;\u7684\u6574\u6570\u6570\u7ec4&nbsp;<code>height<\/code>&nbsp;\u3002\u6709&nbsp;<code>n<\/code>&nbsp;\u6761\u5782\u7ebf\uff0c\u7b2c&nbsp;<code>i<\/code>&nbsp;\u6761\u7ebf\u7684\u4e24\u4e2a\u7aef\u70b9\u662f&nbsp;<code>(i, 0)<\/code>&nbsp;\u548c&nbsp;<code>(i, height[i])<\/code>&nbsp;\u3002<br>\u627e\u51fa\u5176\u4e2d\u7684\u4e24\u6761\u7ebf\uff0c\u4f7f\u5f97\u5b83\u4eec\u4e0e&nbsp;<code>x<\/code>&nbsp;\u8f74\u5171\u540c\u6784\u6210\u7684\u5bb9\u5668\u53ef\u4ee5\u5bb9\u7eb3\u6700\u591a\u7684\u6c34\u3002<br>\u8fd4\u56de\u5bb9\u5668\u53ef\u4ee5\u50a8\u5b58\u7684\u6700\u5927\u6c34\u91cf\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6bcf\u6b21\u90fd\u4ece\u5de6\u53f3\u6311\u4e00\u4e2a\u9ad8\u5ea6\u5c0f\u7684\uff0c\u56e0\u4e3a\u53ea\u6709\u6700\u5c0f\u7684\u90a3\u4e00\u8fb9\u53d8\u5927\uff0c\u6574\u4f53\u5bb9\u91cf\u624d\u53ef\u80fd\u53d8\u5927\u3002\u6807\u51c6\u89e3\u7b54\u8c8c\u4f3c\u6bcf\u6b21\u90fd\u4f1a\u8ba1\u7b97\u5bb9\u91cf\uff0c\u4e0d\u8fc7\u6211\u7684\u89e3\u6cd5\u867d\u7136\u4e0d\u7528\u8fd9\u6837\u5374\u5f88\u957f\u3002\u7efc\u5408\u8003\u8651\u5c31\u8fd9\u6837\u5427\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>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&#91;l], height&#91;r]) * (r - l);\n            ans = max(ans, area);\n            if (height&#91;l] &lt;= height&#91;r]) {\n                ++l;\n            }\n            else {\n                --r;\n            }\n        }\n        return ans;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e09\u6570\u4e4b\u548c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 nums \uff0c\u5224\u65ad\u662f\u5426\u5b58\u5728\u4e09\u5143\u7ec4 [nums[i], nums[j], nums[k]] \u6ee1\u8db3 i != j\u3001i != k \u4e14 j != k \uff0c\u540c\u65f6\u8fd8\u6ee1\u8db3 nums[i] + nums[j] + nums[k] == 0 \u3002\u8bf7\u4f60\u8fd4\u56de\u6240\u6709\u548c\u4e3a 0 \u4e14\u4e0d\u91cd\u590d\u7684\u4e09\u5143\u7ec4\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u904d\u5386O(N<sup>3<\/sup>)\uff0c\u5f88\u53ef\u60dc\u5c31\u8d85\u65f6\u4e86<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vector&lt;vector&lt;int&gt;&gt; threeSum(vector&lt;int&gt;&amp; nums) {\n        vector&lt;vector&lt;int&gt;&gt; ret;\n        set&lt;vector&lt;int&gt;&gt; result;\n        int length =  nums.size();\n\n        for(int i = 0 ; i &lt; length ; i++){\n            for(int j = i + 1 ; j &lt; length ; j++){\n                for(int k = j + 1 ; k &lt; length ; k++){\n                    if (nums&#91;i] + nums&#91;j] + nums&#91;k] == 0)\n                    {\n                        vector&lt;int&gt; temp = {nums&#91;i] , nums&#91;j] , nums&#91;k]};\n                        sort(temp.begin() , temp.end());\n                        result.insert(temp);\n                    }\n                }\n            }\n        }\n        for(auto key : result){\n            ret.push_back(key);\n        }\n        return ret;\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u53cc\u6307\u9488\u904d\u5386\uff0c\u5f88\u5de7\u5999<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; threeSum(vector&lt;int&gt;&amp; nums) {\n        int n = nums.size();\n        vector&lt;vector&lt;int&gt;&gt; ret;\n        sort(nums.begin() , nums.end());\n\n        \/\/ \u6700\u5de6\u8fb9\u6307\u9488\n        for(int frist = 0 ; frist &lt; n ; frist++){\n            \/\/ \u627e\u5230\u4e0d\u4e00\u6837\u7684\u503c\n            if(frist &gt; 0 &amp;&amp; nums&#91;frist -1] == nums&#91;frist])\n                continue;\n            \n            \/\/ third\u521d\u59cb\u662f\u6700\u5927\u7684\u503c\n            int third = n -1;\n\n            \/\/ \u5728\u4e2d\u95f4\u904d\u5386\n            for(int second = frist + 1 ; second &lt; third ; second++){\n                if(second &gt; frist + 1 &amp;&amp; nums&#91;second] == nums&#91;second - 1] )\n                    continue;\n                \n                \/\/\u6700\u5c0f\u7684\u4e24\u4e2a\u76f8\u52a0\u90fd\u6bd4\u6700\u5927\u503c\u5927\uff0c\u90a3\u9700\u8981\u6700\u5927\u503c\u53d8\u5c0f\n                while(second &lt; third &amp;&amp; nums&#91;second] + nums&#91;third] + nums&#91;frist] &gt; 0){\n                    third --;\n                }\n\n                \/\/\u91cd\u5408\uff0c\u53ef\u4ee5\u9000\u51fa\u4e86\n                if(second == third) break;\n                if(nums&#91;second] + nums&#91;third] + nums&#91;frist] == 0){\n                    ret.push_back({nums&#91;frist], nums&#91;second], nums&#91;third]});\n                }\n            }\n        }\n        return ret;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u63a5\u96e8\u6c34<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u5b9a&nbsp;<code>n<\/code>&nbsp;\u4e2a\u975e\u8d1f\u6574\u6570\u8868\u793a\u6bcf\u4e2a\u5bbd\u5ea6\u4e3a&nbsp;<code>1<\/code>&nbsp;\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\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-45.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"412\" height=\"161\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-45.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3186\"  sizes=\"auto, (max-width: 412px) 100vw, 412px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u521d\u770b\u975e\u5e38\u9006\u5929\u96be\uff0c\u4f46\u662f\u770b\u4e86\u89e3\u6790\u597d\u50cf\u5c31\u53c8\u7b80\u5355\u4e86<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u662f\u52a8\u6001\u89c4\u5212\uff0c\u4e8c\u662f\u4e0b\u9762\u7684<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f7f\u7528height[left]\u548cheight[right]\u7684\u503c\u66f4\u65b0leftMax\u548crightMax\u7684\u503c\uff1b<\/li>\n\n\n\n<li>\u5982\u679cheight[left]&lt;height[right]\uff0c\u5219\u5fc5\u6709leftMax&lt;rightMax\uff0c\u4e0b\u6807left\u5904\u80fd\u63a5\u7684\u96e8\u6c34\u91cf\u7b49\u4e8eleftMax\u2212height[left]\uff0c\u5c06\u4e0b\u6807left\u5904\u80fd\u63a5\u7684\u96e8\u6c34\u91cf\u52a0\u5230\u80fd\u63a5\u7684\u96e8\u6c34\u603b\u91cf\uff0c\u7136\u540e\u5c06left\u52a01\uff08\u5373\u5411\u53f3\u79fb\u52a8\u4e00\u4f4d\uff09\uff1b<\/li>\n\n\n\n<li>\u5982\u679cheight[left]\u2265height[right]\uff0c\u5219\u5fc5\u6709leftMax\u2265rightMax\uff0c\u4e0b\u6807right\u5904\u80fd\u63a5\u7684\u96e8\u6c34\u91cf\u7b49\u4e8erightMax\u2212height[right]\uff0c\u5c06\u4e0b\u6807right\u5904\u80fd\u63a5\u7684\u96e8\u6c34\u91cf\u52a0\u5230\u80fd\u63a5\u7684\u96e8\u6c34\u603b\u91cf\uff0c\u7136\u540e\u5c06right\u51cf1\uff08\u5373\u5411\u5de6\u79fb\u52a8\u4e00\u4f4d\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>int trap(vector&lt;int&gt;&amp; height) {\n        int ans = 0;\n        int left = 0 , right = height.size() - 1;\n        int left_max = 0 , right_max = 0;\n\n        while(left &lt; right){\n            \/\/\u53d6\u5f53\u524d\u6700\u5927\n            left_max = max(left_max , height&#91;left]);\n            right_max = max(right_max , height&#91;right]);\n            \n            \/\/\u5982\u679c\u5de6\u8fb9\u9ad8\u5ea6\u5c0f\u4e8e\u53f3\u8fb9\uff0c\u8868\u793a\u5de6\u8fb9\u4e00\u5b9a\u53ef\u4ee5\u90fd\u4e0a\n            if(height&#91;left] &lt; height&#91;right]){\n                ans += left_max - height&#91;left];\n                ++left;\n            } else {\n                ans += right_max - height&#91;right];\n                -- right;\n            }\n        }\n        return ans;\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6709\u4e00\u4e2a\u66f4\u597d\u7406\u89e3\u7684<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-46-1024x657.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"657\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-46-1024x657.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3187\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u548c\u4e3a K \u7684\u5b50\u6570\u7ec4<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 nums \u548c\u4e00\u4e2a\u6574\u6570&nbsp;k \uff0c\u8bf7\u4f60\u7edf\u8ba1\u5e76\u8fd4\u56de \u8be5\u6570\u7ec4\u4e2d\u548c\u4e3a&nbsp;k&nbsp;\u7684\u5b50\u6570\u7ec4\u7684\u4e2a\u6570&nbsp;\u3002\u4e0b\u9762\u662f\u4e00\u4e2a\u5355\u7eaf\u7684\u6392\u8868\uff0cO\uff08n<sup>2<\/sup>\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int subarraySum(vector&lt;int&gt;&amp; nums, int k) {\n      \n        int sum = 0;\n        int n = nums.size();\n        \n        for(int i = 0 ; i &lt; n ; i++){\n            int current = 0;\n            for(int j = i ; j &lt; n ; j++){\n                current += nums&#91;j];\n                if(current == k) sum ++;\n            }\n        }\n        return sum;\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed3\u679c\u7b54\u6848\u6709\u4e2a\u751c\u83dc\u60f3\u6cd5\uff0c\u5047\u8bbe\u7528a[i]\u8868\u793a\u4ece0\u52a0\u5230i\uff0c\u90a3\u6211\u8981i,j\u4e4b\u95f4\u53ea\u9700\u8981a[j] &#8211; a[i-1]\u3002\u90a3\u8fd9\u6837\uff0c\u6211\u8981\u6c42\u4e00\u4e2a\u533a\u95f4[j,i]\u7684\u548c\u4e3atarget\uff0c\u5219\u4e3aa[i] &#8211; a[j] = target\uff0c\u90a3\u5bf9\u4e8e\u4efb\u610f\u4e00\u4e2aa[i]\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5bf9\u5b83\u524d\u9762\u7684\u6570\u5b57\u5224\u65ad\uff0c\u662f\u5426\u6709\u7b49\u4e8ea[i]-target\u5373\u53ef\uff0c\u5982\u679co1\u53ef\u4ee5\u5224\u65ad\uff0c\u90a3\u4e48\u6700\u7ec8\u7b97\u6cd5\u590d\u6742\u5ea6\u5c31\u662fO(n)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e16\u754c\u4e0a\u60f3\u51fa\u8fd9\u4e48\u5de7\u5999\u7b97\u6cd5\u7684\u4eba\u90fd\u662f\u751c\u83dc\u5417\uff1f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int subarraySum(vector&lt;int&gt;&amp; nums, int k) {\n        unordered_map&lt;int , int&gt; mp;\n        \/\/\u4fdd\u8bc1\u6bd4\u5982\u8bf4\u81ea\u76f8\u7b49\u60c5\u51b5\u4e0b\uff0c\u53ef\u4ee5\u7edf\u8ba1\u5230\n        mp&#91;0] = 1;\n        int sum = 0;\n        int count = 0;\n        for(int i = 0 ; i &lt; nums.size() ; i++){\n            sum += nums&#91;i];\n            if(mp.find(sum - k) != mp.end()){\n                count += mp&#91;sum - k];\n            }\n            mp&#91;sum]++;\n        }\n        return count;\n        \n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u65e0\u91cd\u590d\u5b57\u7b26\u7684\u6700\u957f\u5b50\u4e32<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u5b9a\u4e00\u4e2a\u5b57\u7b26\u4e32&nbsp;<code>s<\/code>&nbsp;\uff0c\u8bf7\u4f60\u627e\u51fa\u5176\u4e2d\u4e0d\u542b\u6709\u91cd\u590d\u5b57\u7b26\u7684&nbsp;<strong>\u6700\u957f&nbsp;\u5b50\u4e32&nbsp;<\/strong>\u7684\u957f\u5ea6\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e9\u4e0a\u53ef\u80fd\u72b6\u6001\u597d\uff1f\u4e00\u4e0b\u5c31\u505a\u51fa\u6765\u4e86<br>\u53f3\u6307\u9488\u6bcf\u6b21\u90fd\u662f\u65b0\u52a0\u5165\u7684\u5143\u7d20\uff0c\u5982\u679c\u5df2\u7ecf\u5b58\u5728\uff0c\u90a3\u5de6\u6307\u9488\u5c31\u5220\u6389\u81ea\u5df1\u7684\u5411\u53f3\u79fb\u52a8<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int lengthOfLongestSubstring(string s) {\n        unordered_set&lt;char&gt; st;\n        int n = s.length();\n        int left= 0 , right = 0;\n        int max_length = 0;\n        int current_length = 0;\n        while(right &lt; n ){\n            \/\/\u6ca1\u627e\u5230\n            if(st.count(s&#91;right]) == 0){\n                st.insert(s&#91;right]);\n                current_length ++;\n                right++;\n            }\n            \/\/\u627e\u5230\u4e86\n            else{\n                 st.erase(s&#91;left]);\n                 left++;\n                 current_length --;\n            }\n            max_length = current_length &gt; max_length ? current_length : max_length;\n        }\n        return max_length;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u627e\u5230\u5b57\u7b26\u4e32\u4e2d\u6240\u6709\u5b57\u6bcd\u5f02\u4f4d\u8bcd<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u5b9a\u4e24\u4e2a\u5b57\u7b26\u4e32&nbsp;<code>s<\/code>&nbsp;\u548c&nbsp;<code>p<\/code>\uff0c\u627e\u5230&nbsp;<code>s<\/code><strong>&nbsp;<\/strong>\u4e2d\u6240\u6709&nbsp;<code>p<\/code><strong>&nbsp;<\/strong>\u7684&nbsp;<strong>\u5f02\u4f4d\u8bcd&nbsp;<\/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\n\n\n<p class=\"wp-block-paragraph\">\u592a\u4f4e\u6548\u4e86\uff0c\u76f4\u63a5timeout\u3002\u590d\u6742\u5ea6\u662fo(nNlogN)\u3002\u770b\u6765\u5fc5\u7136\u662fp\u540e\u7eed\u7684N\u592a\u5927\u4e86\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    vector&lt;int&gt; findAnagrams(string s, string p) {\n        vector&lt;int&gt; ans;\n        int n_s = s.length() , n_p = p.length();\n        sort(p.begin() , p.end());\n        int left = 0 ;\n        while(left + n_p - 1 &lt; n_s){\n            string subStr = s.substr(left , n_p);\n            sort(subStr.begin() , subStr.end());\n            if(p == subStr){\n                ans.push_back(left);\n            }\n            left++;\n        }\n        return ans;\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u60f3\u51fa\u6765\u4e86O\uff08n\uff09\u7684\uff0c\u89c9\u5f97\u975e\u5e38\u591f\u7528\u3002\u6ce8\u610f\u7684\u70b9\u662f\uff0c\u867d\u7136unordered_map&lt;char , int&gt;\u5728\u521d\u59cb\u5316\u65f6\u5019\uff0c\u5982\u679cvalue\u6ca1\u6709\uff0c\u90a3\u9ed8\u8ba4\u662f0\uff0c\u4f46\u662f\u4e8c\u8005\u6bd4\u8f83\u65f6\u5019\u5e76\u4e0d\u4f1a\u76f8\u7b49\u3002<br>\u5269\u4e0b\u7684\u5c31\u662f\u6ed1\u52a8\u6bd4\u8f83\uff0c\u52a0\u4e00\u4e2a\u51cf\u4e00\u4e2a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vector&lt;int&gt; findAnagrams(string s, string p) {\n        vector&lt;int&gt; ans;\n        int n_s = s.length() , n_p = p.length();\n        unordered_map&lt;char , int&gt; mp;\n        unordered_map&lt;char , int&gt; ans_mp;\n        for(int i = 0 ; i &lt; 26 ; i++){\n            mp&#91;'a'+ i] = 0;\n            ans_mp&#91;'a'+ i]  = 0;\n        }\n\n        for(int i = 0 ; i &lt; n_p ; i++){\n            mp&#91;s&#91;i]]++;\n            ans_mp&#91;p&#91;i]]++;\n        }\n        for(int i = 0 ; i + n_p - 1 &lt; n_s ; i++){\n            if(mp == ans_mp){\n                ans.push_back(i);\n            }\n            mp&#91; s&#91;i] ]--;\n            mp&#91; s&#91;i + n_p] ]++;\n        }\n        return ans;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u6ed1\u52a8\u7a97\u53e3\u6700\u5927\u503c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4&nbsp;<code>nums<\/code>\uff0c\u6709\u4e00\u4e2a\u5927\u5c0f\u4e3a&nbsp;<code>k<\/code><em>&nbsp;<\/em>\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&nbsp;<code>k<\/code>&nbsp;\u4e2a\u6570\u5b57\u3002\u6ed1\u52a8\u7a97\u53e3\u6bcf\u6b21\u53ea\u5411\u53f3\u79fb\u52a8\u4e00\u4f4d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd4\u56de&nbsp;<em>\u6ed1\u52a8\u7a97\u53e3\u4e2d\u7684\u6700\u5927\u503c&nbsp;<\/em>\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f4\u63a5\u60f3\u5230\u7684\u65b9\u6cd5\u662f\u4f18\u5148\u7ea7\u961f\u5217\u3002\u8fd9\u6837\u6bcf\u6b21logN\uff0c\u6574\u4f53\u5c31\u662fnlogN\u3002\u57fa\u4e8e\u7ea2\u9ed1\u6811\u5dee\u4e0d\u591a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vector&lt;int&gt; maxSlidingWindow(vector&lt;int&gt;&amp; nums, int k) {\n        \/\/ deque\u4ece\u524d\u540e\u90fd\u53ef\u4ee5pop\n        deque&lt;int&gt; q;\n        int n = nums.size();\n\n        \/\/ \u5148\u662f\u5bf9\u6700\u524d\u9762K\u4e2a\uff0c\u4e14\u9898\u76ee\u63d0\u5230 k &lt; n\u4e86\n        for(int i = 0 ; i &lt; k ; i++){\n            \/\/ \u6b64\u65f6q\u5185\u90e8\u662f\u964d\u5e8f\u6392\u5217\uff0c\u5982\u679c\u540e\u9762\u7684\u6bd4\u4ed6\u5927\uff0c\u90a3\u8bf4\u660e\u524d\u9762\u7684\u90fd\u6ca1\u7528\u4e86\n            while(!q.empty() &amp;&amp; nums&#91;i] &gt; nums&#91;q.back()]){\n                q.pop_back();\n            }\n            q.push_back(i);\n        }\n\n        \/\/\u6b64\u65f6\uff0c\u7b2c\u4e00\u4e2a\u6570\u5b57\u5c31\u662f\u524d\u9762\u6700\u5927\u7684\n        vector&lt;int&gt; ans = {nums&#91;q.front()]};\n        for(int i = k ; i &lt; n ; i++){\n            \/\/\u8fd8\u662f\u4e00\u6837\uff0c\u5982\u679c\u5927\u4e86\u5c31\u8e22\u51fa\u53bb\n            while(!q.empty() &amp;&amp; nums&#91;i] &gt; nums&#91;q.back()]){\n                q.pop_back();\n            }\n            \/\/\u6781\u7aef\u60c5\u51b5\u53ef\u80fd\u6709k+1\u4e2a\u6570\uff0c\u4f46\u65e0\u6240\u8c13\uff0c\u9a6c\u4e0a\u5c31\u8e22\u4eba\n            q.push_back(i);\n\n            if(q.front() &lt;= i - k){\n                q.pop_front();\n            }\n            ans.push_back(nums&#91;q.front()]);\n        }\n        return ans;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u6700\u5c0f\u8986\u76d6\u5b50\u4e32<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u4e2a\u5b57\u7b26\u4e32&nbsp;<code>s<\/code>&nbsp;\u3001\u4e00\u4e2a\u5b57\u7b26\u4e32&nbsp;<code>t<\/code>&nbsp;\u3002\u8fd4\u56de&nbsp;<code>s<\/code>&nbsp;\u4e2d\u6db5\u76d6&nbsp;<code>t<\/code>&nbsp;\u6240\u6709\u5b57\u7b26\u7684\u6700\u5c0f\u5b50\u4e32\u3002\u5982\u679c&nbsp;<code>s<\/code>&nbsp;\u4e2d\u4e0d\u5b58\u5728\u6db5\u76d6&nbsp;<code>t<\/code>&nbsp;\u6240\u6709\u5b57\u7b26\u7684\u5b50\u4e32\uff0c\u5219\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32&nbsp;<code>\"\"<\/code>&nbsp;\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6838\u5fc3\u601d\u60f3\uff1a\u53f3\u8fb9r\u4e00\u76f4\u5f80\u53f3\u8d70\uff0c\u68c0\u67e5\u533a\u95f4\u5185\u662f\u5426\u6ee1\u8db3\u8981\u6c42\u3002\u5982\u679c\u6ee1\u8db3\u8981\u6c42\u5c31\u7f29\u5de6\u8fb9\uff0c\u6700\u7ec8\u53d6\u5230\u4e00\u4e2a\u6bd4\u8f83\u597d\u7684\u7ed3\u679c\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    unordered_map&lt;char , int&gt; m_s;\n    int check(){\n        for(auto p : m_s){\n            if(p.second &lt; 0)\n                return 0;\n        }\n        return 1;\n    }\n\n    string minWindow(string s, string t) {\n        \n        int n_s = s.length() , n_t = t.length();\n\n        \/\/ \u8bbe\u5b9a\u4e3a\u8d1f\u6570\uff0c\u53ea\u6709\u5168\u6b63\u624d\u8bf4\u660e\u6ee1\u8db3\u8981\u6c42\n        for(int i = 0 ; i &lt; n_t ; i++){\n            m_s&#91;t&#91;i]] --;\n        }\n\n        int l = 0 , r = 0;\n        int len = INT_MAX, ansL = -1;\n        while(r &lt; n_s){\n            \/\/\u5bf9\u5e94\u7684\u8868\u91cc+1\uff0c\u5411\u53f3\u79fb\u52a8\n            m_s&#91;s&#91;r]]++;\n \n            \/\/\u5f53\u6ee1\u8db3\u8981\u6c42\uff0c\u5f00\u59cb\u7f29\u5de6\u8fb9\n            while(check()){\n                \/\/\u6bd4\u6700\u5927\u7684\u5c0f\uff0c\u66f4\u65b0\u5de6\u8fb9\u7b54\u6848\n                if(r - l + 1 &lt; len){\n                    len = r - l + 1;\n                    ansL = l;\n                }\n                m_s&#91;s&#91;l]]--;\n                l++;\n            }\n            r++;\n        }\n\n        return ansL == -1 ? \"\" : s.substr(ansL , len);\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u6700\u5927\u5b50\u6570\u7ec4\u548c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4&nbsp;<code>nums<\/code>&nbsp;\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\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5b50\u6570\u7ec4<\/strong>\u662f\u6570\u7ec4\u4e2d\u7684\u4e00\u4e2a\u8fde\u7eed\u90e8\u5206\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int maxSubArray(vector&lt;int&gt;&amp; nums) {\n        int  pre = 0 , max_ans = nums&#91;0];\n        for(int i = 0 ; i &lt; nums.size() ; i++){\n            \/\/ \u5f53\u524d\u6570\u6700\u5927\u503c\uff0c\u6bd4\u8f83\u524d\u9762\u7684\u6570\u52a0\u4e0a\u81ea\u5df1\u548c\u5f53\u524d\u6570\u6bd4\u8f83\n            \/\/ \u5982\u679c\u4ece\u81ea\u5df1\u8fd9\u91cc\u5f00\u59cb\u597d\u90a3\u524d\u9762\u7684\u80af\u5b9a\u6ca1\u7528\u4e86\n            pre = max(pre + nums&#91;i] , nums&#91;i]);\n            max_ans = max(max_ans , pre);\n        }\n        return max_ans;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u5408\u5e76\u533a\u95f4<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u6570\u7ec4&nbsp;<code>intervals<\/code>&nbsp;\u8868\u793a\u82e5\u5e72\u4e2a\u533a\u95f4\u7684\u96c6\u5408\uff0c\u5176\u4e2d\u5355\u4e2a\u533a\u95f4\u4e3a&nbsp;<code>intervals[i] = [start<sub>i<\/sub>, end<sub>i<\/sub>]<\/code>&nbsp;\u3002\u8bf7\u4f60\u5408\u5e76\u6240\u6709\u91cd\u53e0\u7684\u533a\u95f4\uff0c\u5e76\u8fd4\u56de&nbsp;<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>&nbsp;\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u601d\u8def\u5927\u6982\u5c31\u662f\u5148\u6392\u5e8f\uff0c\u6309\u7167\u7b2c\u4e00\u4e2a\u6570\u6392\u3002\u62cd\u597d\u540e\u4ece\u524d\u5f80\u540e\u904d\u5386\u5904\u7406\u3002<br>\u6ca1\u60f3\u5230\u7684\u70b9\u662fsort(intervals.begin(), intervals.end());\u5c45\u7136\u53ef\u4ee5\u76f4\u63a5\u5bf9\u4e8c\u7ef4\u6570\u7ec4\u6392\u5e8f\uff0c\u4f9d\u636e\u8fd8\u662f\u6839\u636e\u7b2c\u4e00\u4e2a\u6570\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vector&lt;vector&lt;int&gt;&gt; merge(vector&lt;vector&lt;int&gt;&gt;&amp; intervals) {\n        if(intervals.size() == 0) return{};\n\n        sort(intervals.begin(), intervals.end());\n        int n = intervals.size();\n\n        vector&lt;vector&lt;int&gt;&gt; ans;\n        int l = intervals&#91;0]&#91;0] , r = intervals&#91;0]&#91;1];\n        for(int i = 1 ; i &lt; n ; i++){\n            \/\/\u5de6\u8fb9\u90fd\u8d85\u51fa\u8fb9\u754c\uff0c\u5219\u53ef\u4ee5\u628a\u4e4b\u524d\u90a3\u4e2a\u52a0\u8fdb\u53bb\u4e86\uff0c\u5e76\u5f00\u59cb\u65b0\u4e00\u8f6e\u5faa\u73af\n            if(intervals&#91;i]&#91;0] &gt; r){\n                ans.push_back({l,r});\n                l = intervals&#91;i]&#91;0];\n                r = intervals&#91;i]&#91;1];\n            }\n            else{\n                \/\/\u6269\u5bbd\u5230\u76ee\u524d\u53ef\u8fbe\u6700\u8fdc\n                if(intervals&#91;i]&#91;1] &gt; r){\n                    r = intervals&#91;i]&#91;1];\n                }\n            }\n        }\n        \/\/\u6700\u540e\u4e00\u5bf9\u6ca1\u6709\u52a0\u4e0a\uff0c\u8865\u5168\n        ans.push_back({l,r});\n        return ans;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u8f6e\u8f6c\u6570\u7ec4<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u5b9a\u4e00\u4e2a\u6574\u6570\u6570\u7ec4&nbsp;<code>nums<\/code>\uff0c\u5c06\u6570\u7ec4\u4e2d\u7684\u5143\u7d20\u5411\u53f3\u8f6e\u8f6c&nbsp;<code>k<\/code><em>&nbsp;<\/em>\u4e2a\u4f4d\u7f6e\uff0c\u5176\u4e2d&nbsp;<code>k<\/code><em>&nbsp;<\/em>\u662f\u975e\u8d1f\u6570\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ecf\u5178\u4e09\u6b21reverse\uff0c\u591a\u60f3\u4e00\u4e0b\u5c31\u611f\u53d7\u5230\u5de7\u5999\u4e86<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    void reverse(vector&lt;int&gt;&amp; nums , int start , int end){\n        while(start &lt; end){\n            swap(nums&#91;start] , nums&#91;end]);\n            start++;\n            end--;\n        }\n    }\n    void rotate(vector&lt;int&gt;&amp; nums, int k) {\n        int n = nums.size();\n        k %= n;\n        reverse(nums , 0 , n - 1);\n        reverse(nums , 0 , k - 1);\n        reverse(nums , k , n - 1);\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u9664\u81ea\u8eab\u4ee5\u5916\u6570\u7ec4\u7684\u4e58\u79ef<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u4e2a\u6574\u6570\u6570\u7ec4&nbsp;<code>nums<\/code>\uff0c\u8fd4\u56de \u6570\u7ec4&nbsp;<code>answer<\/code>&nbsp;\uff0c\u5176\u4e2d&nbsp;<code>answer[i]<\/code>&nbsp;\u7b49\u4e8e&nbsp;<code>nums<\/code>&nbsp;\u4e2d\u9664&nbsp;<code>nums[i]<\/code>&nbsp;\u4e4b\u5916\u5176\u4f59\u5404\u5143\u7d20\u7684\u4e58\u79ef&nbsp;\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9898\u76ee\u6570\u636e&nbsp;<strong>\u4fdd\u8bc1<\/strong>&nbsp;\u6570\u7ec4&nbsp;<code>nums<\/code>\u4e4b\u4e2d\u4efb\u610f\u5143\u7d20\u7684\u5168\u90e8\u524d\u7f00\u5143\u7d20\u548c\u540e\u7f00\u7684\u4e58\u79ef\u90fd\u5728&nbsp;&nbsp;<strong>32 \u4f4d<\/strong>&nbsp;\u6574\u6570\u8303\u56f4\u5185\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bf7&nbsp;<strong>\u4e0d\u8981\u4f7f\u7528\u9664\u6cd5\uff0c<\/strong>\u4e14\u5728&nbsp;<code>O(n)<\/code>&nbsp;\u65f6\u95f4\u590d\u6742\u5ea6\u5185\u5b8c\u6210\u6b64\u9898\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u4e2aclassic\u601d\u8def\uff0c\u4e24\u4e2a\u6570\u7ec4\uff0c\u4e00\u4e2a\u8bb0\u5f55\u6b63\u5411\u4e58\u79ef\uff0c\u53e6\u4e00\u4e2a\u8bb0\u5f55\u53cd\u5411\u4e58\u79ef\u3002\u6700\u7ec8\u4e8c\u8005\u76f8\u7ed3\u5408\uff0c\u5f97\u5230\u60f3\u8981\u7684\u7b54\u6848<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vector&lt;int&gt; productExceptSelf(vector&lt;int&gt;&amp; nums) {\n        int n = nums.size();\n        vector&lt;int&gt; L(n , 0);\n        vector&lt;int&gt; R(n , 0);\n\n        L&#91;0] = nums&#91;0];\n        R&#91;n - 1] = nums&#91;n - 1];\n        for(int i = 1 ; i &lt; n ; i++){\n            L&#91;i] = L&#91;i -1] * nums&#91;i];\n            R&#91;n - i - 1] = R &#91;n - i] * nums&#91;n - i - 1];\n        }\n\n        vector&lt;int&gt; ans(n , 0);\n        ans&#91;0] = R&#91;1];\n        ans&#91;n - 1] = L&#91;n-2];\n        for(int i = 1 ; i &lt; n - 1 ; i++){\n            ans&#91;i] = L&#91;i - 1] * R&#91;i + 1];\n        }\n        return ans;\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed3\u679c\u901f\u5ea6\u8fd8\u4e0d\u662f\u5f88\u5feb\u3002\u770b\u7684\u6700\u4f73\u7684\u601d\u8def\u662f\uff0c\u5176\u5b9e\u53ea\u7528\u4e00\u4e2a\u6570\u7ec4\u5c31\u591f\u4e86\u3002\u5f00\u59cb\u5168\u90e8\u8bbe\u7f6e\u4e3a1\uff0c\u5de6\u53f3\u53cc\u6307\u9488\u8d70\u3002\u5de6\u6307\u9488\u5c31\u8bb0\u5f55\u5230\u8fd9\u4e2a\u4f4d\u7f6e\u5de6\u8fb9\u4e58\u79ef\uff0c\u4e58\u597d\u540e\u653e\u5728\u8fd9\u91cc\u3002\u53f3\u8fb9\u540c\u7406\u3002\u8fd9\u6837\u4e00\u6b21\u5c31\u5168\u90e8\u8dd1\u5b8c\u4e86\u3002\u751c\u83dc\u8fd8\u662f\u592a\u65e0\u6cd5\u6218\u80dc\u4e86\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    vector&lt;int&gt; productExceptSelf(vector&lt;int&gt;&amp; nums) {\n        int n = nums.size();\n        vector&lt;int&gt; ans(n , 1);\n        int L = 1 , R = 1;\n        for(int i = 1 ; i &lt; n ; i++){\n            L *= nums&#91;i-1];\n            ans&#91;i] *= L;\n            R *= nums&#91;n - i];\n            ans&#91;n-i-1] *= R; \n        }\n        return ans;\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ea\u51fa\u73b0\u4e00\u6b21\u7684\u6570\u5b57<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u4e2a \u975e\u7a7a \u6574\u6570\u6570\u7ec4 nums \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\n\n\n<p class=\"wp-block-paragraph\">\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\n\n\n<p class=\"wp-block-paragraph\">\u975e\u5e38\u7ecf\u5178\u7684\u8111\u7b4b\u6025\u8f6c\u5f2f\u3002\u5f00\u59cb\u60f3\u5230\u7684\u54c8\u5e0c\u8868\uff0c\u7ed3\u679c\u5c31\u6d6a\u8d39O\uff08n\uff09\u7a7a\u95f4\u4e0d\u53ef\u4ee5\u3002\u3002\u7ed3\u679c\u76f4\u63a5\u5168\u90e8\u5f02\u6216\u5c31\u5b8c\u4e8b\u4e86,,,\u8fd8\u662f\u633a\u65e0\u8bed\u7684<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u7f3a\u5931\u7684\u7b2c\u4e00\u4e2a\u6b63\u6570<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u4e2a\u672a\u6392\u5e8f\u7684\u6574\u6570\u6570\u7ec4&nbsp;<code>nums<\/code>&nbsp;\uff0c\u8bf7\u4f60\u627e\u51fa\u5176\u4e2d\u6ca1\u6709\u51fa\u73b0\u7684\u6700\u5c0f\u7684\u6b63\u6574\u6570\u3002\u8bf7\u4f60\u5b9e\u73b0\u65f6\u95f4\u590d\u6742\u5ea6\u4e3a&nbsp;<code>O(n)<\/code>&nbsp;\u5e76\u4e14\u53ea\u4f7f\u7528\u5e38\u6570\u7ea7\u522b\u989d\u5916\u7a7a\u95f4\u7684\u89e3\u51b3\u65b9\u6848\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int firstMissingPositive(vector&lt;int&gt;&amp; nums) {\n        \/\/ \u8fd9\u79cd\u4e5f\u662f\u795e\u4eba\u9898\u76ee\u4e86\uff0c\u6216\u8005\u8bf4\u7edd\u5927\u90e8\u5206\u56f0\u96be\u9898\u76ee\n        \/\/ \u65e0\u5f02\u4e8e\u4e00\u4e2a\u8111\u7b4b\u6025\u8f6c\u5f2f\u3002\u770b\u8fc7\u5c31\u4f1a\uff0c\u6ca1\u770b\u8fc7\u5c31\u5f88\u53ef\u80fd\u60f3\u4e0d\u51fa\u6765\u3002\n        \/\/ \u5f53\u4f60\u8d39\u52b2\u5fc3\u601d\u60f3\u5230\u4e00\u4e2a\u89e3\uff0c\u5374\u53d1\u73b0\u590d\u6742\u5ea6\u65e9\u5c31\u9650\u5236\u6b7b\u4e86\uff0c\u63a5\u7740\u770b\u5230\u7b54\u6848\u53ea\u80fd\u65e0\u8bed\u7684\u7b11\u4e86\n\n        int n = nums.size();\n        \/\/\u5bf9\u4e8e\u8d1f\u6570\u548c0\uff0c\u5168\u90e8\u8ba9\u5b83\u8d85\u8fc7\u6570\u7ec4\u5927\u5c0f\uff0c\u8fd9\u6837\u4e0d\u4f1a\u5f71\u54cd\u6b63\u5e38\u503c\n        for(int i = 0 ; i &lt; n ; i++){\n            if(nums&#91;i] &lt;= 0) nums&#91;i] = n + 1;\n        }\n\n        \/\/ \u90a3\u4e48\u5269\u4e0b\u7684\u5c31\u5168\u662f\u6b63\u6570\u4e86\uff0c\u6b64\u65f6\u5bf9\u4e8e&lt;= n\u7684\u90e8\u5206\uff0c\u53bb\u6570\u7ec4\u627e\u5bf9\u5e94\u4f4d\u7f6e\uff0c\u8bbe\u7f6e\u4e3a\u8d1f\u6570(\u76f4\u63a5*-1\u90a3\u4e48\u5076\u6570\u6b21\u4f1a\u51fa\u95ee\u9898)\n        for(int i = 0 ; i &lt; n ;i++){\n            if(abs(nums&#91;i]) &lt;= n) nums&#91;abs(nums&#91;i]) - 1] = -abs(nums&#91;abs(nums&#91;i]) - 1]);\n        }\n        \/\/ \u627e\u5230\u7b2c\u4e00\u4e2a\u6b63\u6570\u5373\u53ef\uff0c\u6ca1\u6709\u88ab\u6620\u5c04\u8fc7\u3002\n        for(int i = 0 ; i &lt; n ; i++){\n            if(nums&#91;i] &gt; 0 ) return i + 1; \n        }\n        return n + 1;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u77e9\u9635\u7f6e\u96f6<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u5b9a\u4e00\u4e2a&nbsp;<code><em>m<\/em> x <em>n<\/em><\/code>&nbsp;\u7684\u77e9\u9635\uff0c\u5982\u679c\u4e00\u4e2a\u5143\u7d20\u4e3a&nbsp;<strong>0&nbsp;<\/strong>\uff0c\u5219\u5c06\u5176\u6240\u5728\u884c\u548c\u5217\u7684\u6240\u6709\u5143\u7d20\u90fd\u8bbe\u4e3a&nbsp;<strong>0<\/strong>&nbsp;\u3002\u8bf7\u4f7f\u7528&nbsp;<strong><a href=\"http:\/\/baike.baidu.com\/item\/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95\" target=\"_blank\" rel=\"noreferrer noopener\">\u539f\u5730<\/a><\/strong>&nbsp;\u7b97\u6cd5<strong>\u3002<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-47.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"791\" height=\"241\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-47.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3190\"  sizes=\"auto, (max-width: 791px) 100vw, 791px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u968f\u624b\u5199\u7684\uff0c\u65f6\u95f4\u590d\u6742\u5ea6O(MN)\uff0c\u4e00\u770b100%\u90a3\u884c\u4e86\u4e0d\u4f18\u5316\u4e86\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void setZeroes(vector&lt;vector&lt;int&gt;&gt;&amp; matrix) {\n        \/\/\u8003\u8651\u5230\u8fd9\u4e2aunordered_set\u662fO(1)\u67e5\u8be2\uff0c\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u4e5f\u8282\u7701\u7a7a\u95f4\n        unordered_set&lt;int&gt; rows;\n        unordered_set&lt;int&gt; cols;\n\n        \/\/ \u884c\u6570\u5217\u6570\u505a\u597d\n        int row_size = matrix.size();\n        int col_size = matrix&#91;0].size();\n\n        \/\/ \u628a\u4e3a0\u7684\u884c\u6570\u5217\u6570\u52a0\u8fdb\u53bb\n        for(int i = 0 ; i &lt; row_size ; i++){\n            for(int j = 0 ; j &lt; col_size ; j++){\n                if(matrix&#91;i]&#91;j] == 0){\n                    rows.insert(i);\n                    cols.insert(j);\n                }\n            }\n        }\n        \/\/ \u5982\u679c\u884c\u6570\u6216\u8005\u5217\u6570\u5728set\u91cc\uff0c\u90a3\u5c31\u8bbe\u7f6e\u4e3a0\n        for(int i = 0 ; i &lt; row_size ; i++){\n            for(int j = 0 ; j &lt; col_size ; j++){\n                if(rows.count(i) || cols.count(j)){\n                    matrix&#91;i]&#91;j] = 0 ;\n                }\n            }\n        }\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u87ba\u65cb\u77e9\u9635<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u4e2a&nbsp;<code>m<\/code>&nbsp;\u884c&nbsp;<code>n<\/code>&nbsp;\u5217\u7684\u77e9\u9635&nbsp;<code>matrix<\/code>&nbsp;\uff0c\u8bf7\u6309\u7167&nbsp;<strong>\u987a\u65f6\u9488\u87ba\u65cb\u987a\u5e8f<\/strong>&nbsp;\uff0c\u8fd4\u56de\u77e9\u9635\u4e2d\u7684\u6240\u6709\u5143\u7d20\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u65cb\u8f6c\u5012\u4e0d\u662f\u95ee\u9898\uff0c\u5f00\u59cb\u6211\u6ca1\u60f3\u5230\u600e\u4e48\u505c\u4e0b\u6765\u3002\u6700\u540e\u4e00\u60f3\u76f4\u63a5\u5faa\u73afmn\u5c31\u884c\uff0c\uff0c\u7b80\u5355\u8584\u7eb1<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vector&lt;int&gt; spiralOrder(vector&lt;vector&lt;int&gt;&gt;&amp; matrix) {\n        \n        int row = matrix.size() , col = matrix&#91;0].size();\n        int i = 0 , j = 0; \n        int direction = 0 , circle = 0; \/\/1,2,3,4\u8868\u793a\u56db\u4e2a\u65b9\u5411\uff0ccircle\u8868\u793a\u8f6c\u4e86\u591a\u5c11\u5708\n        vector&lt;int&gt; ans;\n        \/\/\u4e00\u822c\u60c5\u51b5\u4e0b\u53f3\u8f6c\uff0c\u4f46\u662f\u5982\u679c\u662f\u7ad6\u6761\uff0c\u90a3\u4e48\u65b9\u5411\u8981\u5411\u4e0b\n        if(col == 1) direction = 1;\n        \/\/ \u4e0b\u9762\u662f\u6709\u70b9\u5c4e\u7684\uff0c\u7406\u8bba\u4e0a\u53ef\u4ee5\u5408\u5e76\u4e00\u5757\uff0c\u4e0d\u8fc7\u61d2\u5f97\u60f3\u4e86233333\n        for(int k = 0 ; k &lt; row * col ; k++)\n        {\n            ans.push_back(matrix&#91;i]&#91;j]);\n            if(direction == 0){\n                j ++;\n                \/\/\u62b5\u8fbe\u8fb9\u754c\uff0c\u6389\u5934\n                if(j + circle &gt;= col - 1)\n                    direction++;\n            } else if(direction == 1){\n                i ++;\n                if(i + circle &gt;= row -1)\n                    direction++;\n            } else if(direction == 2){\n                j --;\n                if(j &lt;= circle)\n                {\n                    direction++;\n                }\n            } else if(direction == 3){\n                i--;\n                if(i &lt;= circle + 1)\n                {\n                    direction = 0;\n                    circle++;\n                }\n            }\n        }\n        return ans;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u65cb\u8f6c\u56fe\u50cf<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u5b9a\u4e00\u4e2a&nbsp;<em>n&nbsp;<\/em>\u00d7&nbsp;<em>n<\/em>&nbsp;\u7684\u4e8c\u7ef4\u77e9\u9635&nbsp;<code>matrix<\/code>&nbsp;\u8868\u793a\u4e00\u4e2a\u56fe\u50cf\u3002\u8bf7\u4f60\u5c06\u56fe\u50cf\u987a\u65f6\u9488\u65cb\u8f6c 90 \u5ea6\u3002<br>\u4f60\u5fc5\u987b\u5728<strong><a href=\"https:\/\/baike.baidu.com\/item\/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;\u539f\u5730<\/a><\/strong>&nbsp;\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&nbsp;<\/strong>\u4f7f\u7528\u53e6\u4e00\u4e2a\u77e9\u9635\u6765\u65cb\u8f6c\u56fe\u50cf\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u5b66\u9898\uff0c\u6ca1\u610f\u601d\u3002<strong>\u5148\u884c\u53cd\u8f6c\uff0c\u518d\u5bf9\u89d2\u7ebf<\/strong>\u3002\u5c31100%AC\u4e86<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void rotate(vector&lt;vector&lt;int&gt;&gt;&amp; matrix) {\n        \/\/\u5148\u884c\u53cd\u8f6c\uff0c\u518d\u5bf9\u89d2\u7ebf\n        int n = matrix.size();\n        for(int i = 0 ; i &lt; n \/2 ; i++){\n            swap(matrix&#91;i] , matrix&#91;n - 1 - i]);\n        }\n        for(int i = 0 ; i &lt; n ; i++){\n            for(int j = i + 1 ; j &lt; n ; j++){\n                swap(matrix&#91;i]&#91;j] , matrix&#91;j]&#91;i]);\n            }\n        }\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u641c\u7d22\u4e8c\u7ef4\u77e9\u9635 II<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7f16\u5199\u4e00\u4e2a\u9ad8\u6548\u7684\u7b97\u6cd5\u6765\u641c\u7d22&nbsp;m&nbsp;x&nbsp;n&nbsp;\u77e9\u9635 matrix \u4e2d\u7684\u4e00\u4e2a\u76ee\u6807\u503c target \u3002\u8be5\u77e9\u9635\u5177\u6709\u4ee5\u4e0b\u7279\u6027\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6bcf\u884c\u7684\u5143\u7d20\u4ece\u5de6\u5230\u53f3\u5347\u5e8f\u6392\u5217\u3002\u6bcf\u5217\u7684\u5143\u7d20\u4ece\u4e0a\u5230\u4e0b\u5347\u5e8f\u6392\u5217\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8111\u7b4b\u6025\u8f6c\u5f2f\uff0c\u770b\u8fc7\u5c31\u4f1a\u3002\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    bool searchMatrix(vector&lt;vector&lt;int&gt;&gt;&amp; matrix, int target) {\n        \/\/ \u53f3\u4e0a\u89d2\u5f00\u59cb\u662f\u4e8c\u53c9\u641c\u7d22\u6811...\n        int m = matrix.size() , n = matrix&#91;0].size();\n        int i = 0 , j = n - 1;\n        while(i &gt;= 0 &amp;&amp; i &lt; m &amp;&amp; j &gt;= 0 &amp;&amp; j &lt;n){\n            if(target &gt; matrix&#91;i]&#91;j]){\n                i++;\n            }else if(target &lt; matrix&#91;i]&#91;j]){\n                j--;\n            }else {\n                return true;\n            }\n        }\n        return false;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/intersection-of-two-linked-lists\/\">\u76f8\u4ea4\u94fe\u8868<\/a><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-55.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"742\" height=\"241\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-55.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3202\"  sizes=\"auto, (max-width: 742px) 100vw, 742px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u662f\u5f88\u7ecf\u5178\u4e86\uff0c\u548c\u516c\u5171\u5c3e\u4e32\u601d\u8def\u4e00\u81f4\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n * Definition for singly-linked list.\n * struct ListNode {\n *     int val;\n *     ListNode *next;\n *     ListNode(int x) : val(x), next(NULL) {}\n * };\n *\/\nclass Solution {\npublic:\n    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {\n        ListNode *A = headA;\n        ListNode *B = headB;\n\n        int back = 0;\n        while(back &lt; 3 ){\n            if(headA == headB) return headA;\n            if(headA-&gt;next) headA = headA-&gt;next;\n                else {\n                    headA = B;\n                    back++;\n                }\n            if(headB-&gt;next)headB = headB-&gt;next;\n                else {\n                    headB = A;\n                    back++;\n                }\n        }\n        return NULL;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/reverse-linked-list\/\">\u53cd\u8f6c\u94fe\u8868<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u521d\u53ef\u6ca1\u90a3\u4e48\u4f1a\uff0c\u90fd\u8981\u6c89\u601d\u5f88\u4e45\uff0c\u73b0\u5728\u5c45\u7136\u4e00\u4e0b\u5c31\u5199\u51fa\u6765\u4e86<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-56-1024x629.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"629\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-56-1024x629.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3203\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n * Definition for singly-linked list.\n * struct 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        ListNode *cur , *temp , * pre = nullptr;\n        cur = head;\n        while(cur != nullptr){\n            temp = cur-&gt;next; \/\/ temp\u7684\u76ee\u7684\u662f\u56e0\u4e3acur\u6389\u5934\u627e\u4e0d\u5230\u4e0b\u4e00\u4e2a\uff0c\u56e0\u6b64\u63d0\u524d\u9501\u5b9a\n            cur-&gt;next = pre; \/\/ pre\u76ee\u7684\u662f\u5355\u5411\u94fe\u8868\u627e\u4e0d\u5230\u524d\u4e00\u4e2a\n            pre = cur;\n            cur = temp;\n        }\n        return pre;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/palindrome-linked-list\/\">\u56de\u6587\u94fe\u8868<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u4e2a\u5355\u94fe\u8868\u7684\u5934\u8282\u70b9&nbsp;<code>head<\/code>&nbsp;\uff0c\u8bf7\u4f60\u5224\u65ad\u8be5\u94fe\u8868\u662f\u5426\u4e3a\u56de\u6587\u94fe\u8868\u3002\u5982\u679c\u662f\uff0c\u8fd4\u56de&nbsp;<code>true<\/code>&nbsp;\uff1b\u5426\u5219\uff0c\u8fd4\u56de&nbsp;<code>false<\/code>&nbsp;\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5feb\u6162\u6307\u9488\u627e\u4e2d\u95f4\uff0c\u7ffb\u8f6c\u540e\u7eed\u5c31\u90fd\u662f\u987a\u5e8f\u4e86\u3002\u6bd4\u8f83\u5373\u53ef<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    ListNode* reverse(ListNode* head){\n        ListNode *cur , *temp , *pre = nullptr;\n        cur = head;\n        while(cur){\n            temp = cur-&gt;next;\n            cur-&gt;next = pre;\n            pre = cur;\n            cur = temp;\n        }\n        return pre;\n    }\n    bool isPalindrome(ListNode* head) {\n        \/\/ O(n)\u7a7a\u95f4\u90a3\u5c31\u592a\u7b80\u5355\u4e86\uff0c\u4f46\u662fO(1)\n        \/\/ \u5feb\u6162\u6307\u9488\u627e\u4e2d\u95f4\uff0c\u53cd\u8f6c\u540e\u7eed\u6bd4\u8f83\n        ListNode *fast = head, * slow = head;\n        \n        \/\/\u5148\u627e\u5230\u7ffb\u8f6c\u70b9\n        \/\/ \u4fdd\u8bc1slow\u5728\u9700\u8981\u7ffb\u8f6c\u7684\u524d\u4e00\u4e2a\uff08\u65e0\u8bba\u5947\u5076\uff09\n        while(1){\n            if(fast-&gt;next) {\n                fast = fast-&gt;next;\n            } \n            if(fast-&gt;next){\n                fast = fast-&gt;next;\n                slow = slow-&gt;next;\n            } else{\n                break;\n            }\n        }\n\n        \/\/\u73b0\u5728\u7ffb\u8f6c,\u6bd4\u8f83\u6bcf\u4e00\u4e2a\uff0c\u76f4\u5230\u6700\u540e\n        ListNode* end = reverse(slow-&gt;next) ,* start = head;\n        while(end){ \/\/\u7528\u540e\u9762\u8fd9\u4e2a\u662f\u56e0\u4e3a\u4ed6\u77ed\n            if(end-&gt;val != start-&gt;val) return false;\n            end = end-&gt;next;\n            start = start-&gt;next;\n        }\n        return true;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/linked-list-cycle\/\">\u73af\u5f62\u94fe\u8868<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u4e2a\u94fe\u8868\u7684\u5934\u8282\u70b9&nbsp;<code>head<\/code>&nbsp;\uff0c\u5224\u65ad\u94fe\u8868\u4e2d\u662f\u5426\u6709\u73af<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u773c\u4e01\u771f\uff0c\u5feb\u6162\u6307\u9488\uff0c\u8fc7\u3002\u6211\u5f88\u597d\u5947\u4e3a\u4ec0\u4e48\u6211\u53ea\u8d85\u8fc720%\u4f46\u590d\u6742\u5ea6\u6700\u4f18\uff0c\u53d1\u73b0\u7b2c\u4e00\u540d\u539f\u6765\u662f\u68c0\u6d4b\u5faa\u73af\u8d70\u4e8610000\u8fd8\u5728\u8d70\u5c31\u662f\u6709\u73af\u3002\u3002\u3002\u3002\u3002\u3002\u9006\u5929<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    bool hasCycle(ListNode *head) {\n        ListNode *fast = head , *slow = head;\n        if(head == NULL || head-&gt;next ==NULL) return false;\n        fast = head-&gt;next-&gt;next;\n        slow = head-&gt;next;\n        while(fast){\n            if(fast == slow){\n                return true;\n            }\n            fast = fast-&gt;next;\n            if(fast == NULL) return false;\n            fast = fast-&gt;next;\n            slow = slow-&gt;next;\n        }\n        return false;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/linked-list-cycle-ii\/\">\u73af\u5f62\u94fe\u8868 II<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u5b66\u63a8\u5230\u7c7b\u578b\uff0c\u60f3\u51fa\u6765\u5c31\u4f1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ListNode *detectCycle(ListNode *head) {\n        \/\/\u5feb\u6162\u6307\u9488\u8d70\uff0c\u76f8\u9047\u4e4b\u540e\u5728\u4ece\u5934\u6765\u4e00\u4e2a\u6307\u9488\uff0c\u76f8\u9047\u70b9\u5c31\u662f\u73af\u7684\u4f4d\u7f6e\u3002\n        ListNode *fast = head , *slow = head;\n        if(head == NULL || head-&gt;next ==NULL) return NULL;\n        fast = head-&gt;next-&gt;next;\n        slow = head-&gt;next;\n        while(fast){\n            if(fast == slow){\n                ListNode *start = head;\n                while(start != slow){\n                    start = start-&gt;next;\n                    slow = slow-&gt;next;\n                }\n                return start;\n            }\n            fast = fast-&gt;next;\n            if(fast == NULL) return NULL;\n            fast = fast-&gt;next;\n            slow = slow-&gt;next;\n        }\n        return NULL;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/merge-two-sorted-lists\/\">\u5408\u5e76\u4e24\u4e2a\u6709\u5e8f\u94fe\u8868<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ecf\u5178\u9898\uff0c\u4e0d\u8d58\u8ff0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {\n        ListNode *mergeList = new ListNode();\n        ListNode *head = mergeList;\n        \/\/ \u8c01\u5c0f\u8c01\u4e0b\u4e00\u4e2a\n        while(list1 &amp;&amp; list2){\n            if(list1-&gt;val &lt; list2-&gt;val){\n                mergeList-&gt;next = list1 ;\n                list1 = list1-&gt;next;\n            } else {\n                mergeList-&gt;next = list2;\n                list2 = list2-&gt;next;\n            }\n            mergeList = mergeList-&gt;next;\n        }\n        if(list1) mergeList-&gt;next = list1;\n        else mergeList-&gt;next =list2;\n        return head-&gt;next;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/add-two-numbers\/\">\u4e24\u6570\u76f8\u52a0<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u9006\u5e8f\u6570\u76f8\u52a0\uff0c\u5982\u56fe\u662f342 + 465 = 807.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-57.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"483\" height=\"342\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-57.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3204\"  sizes=\"auto, (max-width: 483px) 100vw, 483px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u6709\u70b9\u5570\u55e6\uff0c\u4f46\u662f100%AC\uff0c\u7ec6\u8282\u4e0d\u4f18\u5316\u4e86<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {\n        ListNode* current_node = new ListNode();\n        ListNode* head = current_node;\n        int current = 0 , next = 0;\n        \/\/\u76f8\u52a0\uff0c\u5b58\u5230\u4e00\u76f4\u8282\u70b9\u3002\u8bb0\u5f55\u8fdb\u4f4d\n        while(l1 &amp;&amp; l2){\n            int sum = l1-&gt;val + l2-&gt;val + next;\n            current = sum % 10;\n            next = sum \/ 10;\n            l1-&gt;val = current;\n            current_node-&gt;next = l1;\n            current_node = current_node-&gt;next;\n\n            l1 = l1-&gt;next;\n            l2 = l2-&gt;next;\n        }\n        \/\/ \u5982\u679c\u4e00\u8fb9\u957f\u4e00\u8fb9\u77ed\uff0c\u90a3\u4e48\u8fd8\u8981\u63a5\u7740\u7b97\n        while(l1){\n            int sum = l1-&gt;val + next;\n            current = sum % 10;\n            next = sum \/ 10;\n            l1-&gt;val = current;\n            current_node-&gt;next = l1;\n            current_node = current_node-&gt;next;\n\n            l1 = l1-&gt;next; \n            if(next == 0) break;\n        }\n        while(l2){\n            int sum = l2-&gt;val + next;\n            current = sum % 10;\n            next = sum \/ 10;\n            l2-&gt;val = current;\n            current_node-&gt;next = l2;\n            current_node = current_node-&gt;next;\n\n            l2 = l2-&gt;next; \n            if(next == 0) break;\n        }\n        \/\/ \u6700\u540e\u8fd8\u8fdb\u4f4d\uff0c\u591a\u52a0\u4e00\u4e2a\u8282\u70b9\n        if(next == 1){\n            ListNode* up = new ListNode(1);\n            current_node-&gt;next = up;\n            \/\/ new node\n        }\n        return head-&gt;next;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/remove-nth-node-from-end-of-list\/\">\u5220\u9664\u94fe\u8868\u7684\u5012\u6570\u7b2c N \u4e2a\u7ed3\u70b9<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5feb\u6162\u6307\u9488\u79d2\u4e86\u3002\u4e00\u4e2a\u6307\u9488\u5febN\u4e2a\uff0c\u90a3\u4e2a\u5230\u7ed3\u5c3e\u8fd9\u4e2a\u5c31\u5220<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/remove-nth-node-from-end-of-list\/\">\u5220\u9664\u94fe\u8868\u7684\u5012\u6570\u7b2c N \u4e2a\u7ed3\u70b9<\/a><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-58.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"542\" height=\"222\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-58.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3205\"  sizes=\"auto, (max-width: 542px) 100vw, 542px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>    ListNode* removeNthFromEnd(ListNode* head, int n) {\n        ListNode* fast = head , *slow = head ;\n        \/\/\u4fdd\u6301\u9886\u5148N\u4e2a\uff0c\u5982\u679c\u6b64\u65f6\u4e3a\u7a7a\uff0c\u5219\u8bf4\u660e\u94fe\u8868\u957f\u5ea6\u548c\u8981\u5220\u7684\u4e00\u6837\u591a\uff0c\u90a3\u4e48\u5c31\u53bb\u6389\u7b2c\u4e00\u4e2a\u5c31\u597d\n        while(n --) fast = fast-&gt;next;\n        if(!fast) return head-&gt;next;\n        \/\/\u540e\u9762\u5c31\u662f\u4fdd\u6301\u9886\u5148n+1\u4e2a\uff0c\u8fd9\u6837\u65b9\u4fbf\u5220\n        fast = fast-&gt;next;\n        while(fast ) {\n            fast = fast-&gt;next;\n            slow = slow-&gt;next;\n        }\n        slow-&gt;next = slow-&gt;next-&gt;next;\n        return head;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/swap-nodes-in-pairs\/\">\u4e24\u4e24\u4ea4\u6362\u94fe\u8868\u4e2d\u7684\u8282\u70b9<\/a><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>    ListNode* swapPairs(ListNode* head) {\n        ListNode* start = new ListNode();\n        \/\/ \u8f85\u52a9\u8d77\u70b9\n        start-&gt;next = head;\n        ListNode* left = start, * mid = head, *right = nullptr;\n        \n        \/\/\u5f53\u524d\u8981\u4ea4\u6362\u4fe9\u8282\u70b9\u4e3a\u7a7a\n        while(mid &amp;&amp; mid-&gt;next){\n            \/\/\u4ea4\u6362\n            right = mid-&gt;next;\n            mid-&gt;next = right-&gt;next;\n            left-&gt;next=right;\n            right-&gt;next = mid;\n\n            \/\/\u4ea4\u6362\u5b8c\u6210\u540e\u8c03\u6574\n            left = mid;\n            mid = mid-&gt;next;\n        }\n\n        return start-&gt;next;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/reverse-nodes-in-k-group\/\">K \u4e2a\u4e00\u7ec4\u7ffb\u8f6c\u94fe\u8868<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u9898\u662f\u4e0d\u96be\uff0c\u4f46\u662f\u8981\u6ce8\u610f\u8fb9\u754c\u60c5\u51b5\u3002\u8fd9\u91cc\u6211\u6574\u4e86\u5f88\u4e45\uff0c\u8981\u6ce8\u610f\u51e0\u4e2a\u70b9\uff0c\u6bd4\u5982\u5f00\u59cb\u7684\u5934\u8282\u70b9\u4e0d\u8981\u5f80\u540e\u8dd1\u4e86<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n * Definition for singly-linked list.\n * struct 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* reverse(ListNode* head){\n        ListNode *pre = nullptr , * cur = head ,  *temp;\n        while(cur){\n            temp = cur-&gt;next;\n            cur-&gt;next = pre;\n            pre = cur;\n            cur = temp;\n        }\n        return pre;\n    }\n\n    ListNode* reverseKGroup(ListNode* head, int k) {\n        \/\/\u4e00\u4e2a\u7b80\u5355\u7684\u601d\u8def\n        \/\/ \u6211\u8981\u7ffb\u8f6c\u4e00\u6bb5\uff0c\u6211\u5c31\u628a\u8fd9\u4e00\u6bb5\u524d\u540e\u90fd\u65ad\u4e86\uff0c\u5e76\u8bb0\u5f55\u5934\uff08\u5c3e\u4f1a\u53d8\u6210\u5934\u4e0d\u7528\u7ba1\uff09\uff0c\u548c\u8fd9\u4e00\u6bb5\u524d\u548c\u540e\n        \/\/ \u5224\u65ad\u662f\u5426\u8981\u7ffb\u8f6c\u5c31\u6392\u4e00\u4e2a\u54e8\u5175\u51fa\u53bb\uff0c\u80fd\u8dd1\u5230\u6307\u5b9a\u4f4d\u7f6e\u4e0d\u4e3a\u7a7a\u5c31\u80fd\n        ListNode* hair = new ListNode();\n        hair-&gt;next = head;\n\n        ListNode* pre = hair , *A = head;\n        ListNode* B = pre, * end = nullptr;\n\n\n        while(1){\n            for(int i = 0 ; i &lt; k; i++) {\n                B = B-&gt;next;\n                if(!B) return hair-&gt;next;\n            }\n            end = B-&gt;next;\n\n            B-&gt;next = nullptr;\n            pre-&gt;next = reverse(A);\n            A-&gt;next = end;\n\n            pre = A ;\n            A = end ;\n            B = pre ;\n        }\n        return hair-&gt;next;\n    }\n};<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/copy-list-with-random-pointer\/\">\u968f\u673a\u94fe\u8868\u7684\u590d\u5236<\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u610f\u601d\u5c31\u662f\uff0c\u4f60\u62f7\u8d1d\u4e00\u4e2anode\u65f6\u5019\uff0c\u91cc\u9762\u7684\u6307\u9488\u5185\u5bb9\uff0c\u4f60\u4e5f\u8981\u62f7\u8d1d\u5230\u65b0\u7684\u91cc\u9762\u3002\u7406\u89e3\u4e4b\u540e\u968f\u4fbf\u6740<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Node* copyRandomList(Node* head) {\n        unordered_map&lt; Node* , Node*&gt; mp;\n\n        Node *start = head;\n        Node *newList = new Node(0) ;\n        Node *cur = newList;\n        \/\/\u5148\u8fc7\u4e00\u904d\uff0c\u54c8\u5e0c\u8868\u5bf9\u5e94\u4e0a\n        while(start){\n            Node *node = new Node(start-&gt;val);\n            cur-&gt;next = node;\n            mp&#91;start] = node;\n            start = start-&gt;next;\n            cur = cur-&gt;next;\n        } \n        \/\/\u518d\u8fc7\u4e00\u904d\uff0c\u627e\u5230random\n        Node *newHead = newList-&gt;next;\n        Node *oldList = head;\n        while(newHead){\n            newHead-&gt;random = mp&#91;oldList-&gt;random];\n            oldList = oldList-&gt;next;\n            newHead = newHead-&gt;next;\n        }\n        return newList-&gt;next;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/sort-list\/\">\u6392\u5e8f\u94fe\u8868<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u94fe\u8868\u7684\u5934\u7ed3\u70b9&nbsp;<code>head<\/code>&nbsp;\uff0c\u8bf7\u5c06\u5176\u6309&nbsp;<strong>\u5347\u5e8f<\/strong>&nbsp;\u6392\u5217\u5e76\u8fd4\u56de&nbsp;<strong>\u6392\u5e8f\u540e\u7684\u94fe\u8868<\/strong>&nbsp;\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">mergesort\uff0c\u5feb\u6162\u6307\u9488\u627e\u4e2d\u70b9\uff0c\u7136\u540e\u5f52\u5e76<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/merge-k-sorted-lists\/\">\u5408\u5e76 K \u4e2a\u5347\u5e8f\u94fe\u8868<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fe9\u4fe9\u5408\u5e76\uff0c\u6211\u8fd9\u91cc\u7528\u4e86\u961f\u5217\u5f88\u65b9\u4fbf\u3002\u6ce8\u610f\u662ffront\uff0cpush\uff0cpop\u3002\u6ca1\u8bed\u6cd5\u63d0\u793a\u597d\u7d2f223333333<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ListNode* mergeList(ListNode *a , ListNode *b){\n        ListNode *head = new ListNode();\n        ListNode *cur = head;\n        while(a &amp;&amp; b){\n            if(a-&gt;val &lt; b-&gt;val){\n                cur-&gt;next = a;\n                a = a-&gt;next;\n            } else {\n                cur-&gt;next = b;\n                b = b-&gt;next;\n            }\n            cur = cur-&gt;next;\n        }\n        if(a) cur-&gt;next = a;\n        else if(b) cur-&gt;next = b;\n        return head-&gt;next;\n    }\npublic:\n    ListNode* mergeKLists(vector&lt;ListNode*&gt;&amp; lists) {\n        if(lists.size() == 0) return nullptr;\n        queue&lt;ListNode*&gt; q;\n        for(int i = 0 ; i &lt; lists.size() ; i++){\n            q.push(lists&#91;i]);\n        }\n        while(q.size() &gt;= 2){\n            ListNode *node1 = q.front();\n            q.pop();\n            ListNode *node2 = q.front();\n            q.pop();\n            q.push(mergeList(node1 , node2));\n        }\n        return q.front();\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/sort-list\/\">\u6392\u5e8f\u94fe\u8868<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u65f6\u95f4\u590d\u6742\u5ea6\u7b26\u5408\u8981\u6c42\uff0c\u7a7a\u95f4\u4e0d\u7b26\u5408\u3002\u8fd8\u6709\u6700\u540e\u7684\u5408\u5e76\u94fe\u8868\u5c45\u7136\u5199\u9519\u4e86\u786c\u662f\u53d1\u73b0\u4e0d\u4e86\u3002\u3002\u3002\u4e00\u957f\u5c31\u4f1a\u9519\u771f\u70e6\u4eba\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    ListNode* sortList(ListNode* head) {\n        return devide(head);\n    }\n    ListNode *devide(ListNode* head){\n        if(head == nullptr) return nullptr;\n        if(head-&gt;next == nullptr) return head;\n        cout &lt;&lt; head-&gt;val &lt;&lt; head-&gt;next-&gt;val;\n        ListNode *fast = head,*slow = head;\n        while(fast){\n            fast = fast-&gt;next;\n            if(fast) {\n                fast = fast-&gt;next;\n                if(fast) slow = slow-&gt;next;\n            }\n        } \n        ListNode *start = slow-&gt;next;\n        slow-&gt;next = nullptr;\n\n        ListNode *left = devide(head);\n        ListNode *right = devide(start);\n        return merge(left , right);\n    }\n\n    ListNode* merge(ListNode *L1 , ListNode *L2){\n        ListNode *head = new ListNode();\n        ListNode *temp = head;\n        while(L1 &amp;&amp; L2){\n            if(L1-&gt;val &lt; L2-&gt;val){\n                temp-&gt;next = L1;\n                L1 = L1-&gt;next;\n            }else {\n                temp-&gt;next = L2;\n                L2 = L2-&gt;next;\n            }\n            temp = temp-&gt;next;\n        }\n        if(L1) temp-&gt;next = L1;\n        else temp-&gt;next = L2;\n        return head-&gt;next;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/lru-cache\/\">LRU \u7f13\u5b58<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f18\u5316\u4e86\u5f88\u591a\uff0c\u611f\u89c9\u662f\u7b26\u5408\u8981\u6c42\u4e86\uff0c\u4f46\u6700\u540e\u5374\u8fd8\u662f\u8d85\u8fc7\u5f88\u5c11\u7684\u4eba&#8230;\u53ef\u80fd\u6700\u597d\u7684\u65b9\u6cd5\u5c31\u662f\u4e0d\u8981\u7528\u94fe\u8868<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class LRUCache {\nstruct Node{\n    int key;\n    int val ;\n    Node *next = nullptr;\n    Node *prev= nullptr;\n    Node(){};\n    Node(int key , int val):key(key),val(val){}\n};\n\nstruct NodeList{\n    unordered_map&lt;int , Node*&gt; mp;\n    Node *head ;\n    Node *tail ;\n    int maxSize;\n    int curSize;\n    NodeList(){\n        head = new Node();\n        tail = head;\n        curSize = 0;\n    }\n\n    int get(int key){\n        \/\/ \u54c8\u5e0c\u8868\uff0c\u5feb\u901f\u627e\n        if(!mp.count(key)) return -1;\n        else{\n            \/\/ \u627e\u5230\u4e86\uff0c\u5219\u9700\u8981\u8fd4\u56de\u76ee\u6807\u503c\u3002\u76f8\u5f53\u4e8e\u91cd\u65b0\u63d2\u5165\u5230\u961f\u5c3e\u3002\n            int value = mp&#91;key]-&gt;val;\n            put(key , value);\n            return value;\n        }\n    }\n\n    void put(int key, int value) {\n        \/\/ \u5148\u63d2\u5165\u5230\u961f\u5c3e\uff0c\u5982\u679c\u8d85\u4e86\u5c31\u5220\u9664\u94fe\u8868\u7b2c\u4e00\u4e2a\n        \/\/ \u54c8\u5e0c\u8868\uff0c\u5feb\u901f\u627e\uff0c\u6ca1\u627e\u5230\u76f4\u63a5\u52a0\uff0c\u627e\u5230\u4e86\uff0c\u5220\u6389\u503c\u518d\u52a0\n        Node *newNode = new Node(key , value);\n        if(!mp.count(key)){\n            tail-&gt;next = newNode;\n            newNode-&gt;prev = tail;\n            tail = tail-&gt;next;\n            mp&#91;key] = newNode;\n        }\n        else{\n            \/\/ \u627e\u5230\u4e86\uff0c\u5220\u9664\u540e\u91cd\u65b0\u52a0\u5165\n            del(key);\n            tail-&gt;next = newNode;\n            newNode-&gt;prev = tail;\n            tail = tail-&gt;next;\n            mp&#91;key] = newNode;\n        }\n        curSize ++;\n\n        \/\/ \u6b64\u65f6\u5224\u65ad\u662f\u5426\u8d85\u51fa\u6700\u5927\u503c\uff0c\u8d85\u8fc7\u5c31\u5220\u9664\u7b2c\u4e00\u4e2a\n        if(curSize &gt; maxSize){\n            del(head-&gt;next-&gt;key);\n        }\n    }\n\n    void del(int key){\n        \/\/ \u8fd9\u91cc\u5728\u5220\u4e4b\u524d\u90fd\u5df2\u7ecf\u67e5\u627e\u8fc7\u786e\u8ba4\u5b58\u5728\n        \/\/ \u7ef4\u62a4\u53cc\u5411\u6307\u9488\n        Node *del = mp&#91;key];\n        Node *prev = del-&gt;prev;\n        prev-&gt;next = del-&gt;next;\n        if(del-&gt;next != nullptr) del-&gt;next-&gt;prev = prev;\n        else {\n            tail = tail-&gt;prev;\n        }\n        delete del;\n        \/\/ \u54c8\u5e0c\u8868\uff0c\u5220\u6389\n        mp.erase(key);\n        curSize --;\n    }\n};\nNodeList *nodeList;\npublic:\n\n    LRUCache(int capacity) {\n        nodeList = new NodeList();\n        nodeList-&gt;maxSize = capacity;\n    }\n    \n    int get(int key) {\n        return nodeList-&gt;get(key);\n    }\n    \n    void put(int key, int value) {\n        nodeList-&gt;put(key , value);\n    }\n};\n\n\/**\n * Your LRUCache object will be instantiated and called as such:\n * LRUCache* obj = new LRUCache(capacity);\n * int param_1 = obj-&gt;get(key);\n * obj-&gt;put(key,value);\n *\/<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/binary-tree-inorder-traversal\/\">\u4e8c\u53c9\u6811\u7684\u4e2d\u5e8f\u904d\u5386<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ecf\u5178\u3002\u9012\u5f52\u5bf9\u4e8e\u4e09\u79cd\u904d\u5386\u90fd\u662f\u53ea\u8981\u6539\u6539\u4f4d\u7f6e\u5c31\u597d\u4e86\uff0c\u4e3a\u4ec0\u4e48\u4e0d\u90fd\u7528\u9012\u5f52\u5462\uff08\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\n    vector&lt;int&gt; ans;\npublic:\n    void inorder(TreeNode* root){\n        if(!root) return;\n        if(root-&gt;left != nullptr) inorder(root-&gt;left);\n        ans.push_back(root-&gt;val);\n        if(root-&gt;right != nullptr) inorder(root-&gt;right);\n    };\n    vector&lt;int&gt; inorderTraversal(TreeNode* root) {\n        inorder(root);\n        return ans;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/maximum-depth-of-binary-tree\/\">\u4e8c\u53c9\u6811\u7684\u6700\u5927\u6df1\u5ea6<\/a><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>    int maxDepth(TreeNode* root) {\n        if(root == nullptr ) return 0;\n        else {\n            return max (maxDepth(root-&gt;left) , maxDepth(root-&gt;right)) + 1;\n        }\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/invert-binary-tree\/\">\u7ffb\u8f6c\u4e8c\u53c9\u6811<\/a><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-59.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"911\" height=\"301\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-59.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3209\"  sizes=\"auto, (max-width: 911px) 100vw, 911px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c81\u6708\u9759\u597d\uff0c\u771f\u597d<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    TreeNode* invertTree(TreeNode* root) {\n        if(root == nullptr) return nullptr;\n        TreeNode *temp = root-&gt;right;\n        root-&gt;right = invertTree(root-&gt;left);\n        root-&gt;left = invertTree(temp);\n        return root;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/symmetric-tree\/\">\u5bf9\u79f0\u4e8c\u53c9\u6811<\/a><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    bool isSymmetric2(TreeNode* node1 , TreeNode* node2){\n        if(node1 == nullptr || node2 == nullptr){\n            if(node1 == nullptr &amp;&amp; node2 == nullptr)\n                return true;\n            return false;\n        } \n\n        if(node1-&gt;val != node2-&gt;val) return false;\n        return isSymmetric2(node1-&gt;left , node2-&gt;right) &amp;&amp; isSymmetric2(node1-&gt;right , node2-&gt;left);\n    }\n    bool isSymmetric(TreeNode* root) {\n        if(root == nullptr) return true;\n        return isSymmetric2(root-&gt;left , root-&gt;right);\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/diameter-of-binary-tree\/\">\u4e8c\u53c9\u6811\u7684\u76f4\u5f84<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u68f5\u4e8c\u53c9\u6811\u7684\u6839\u8282\u70b9\uff0c\u8fd4\u56de\u8be5\u6811\u7684&nbsp;<strong>\u76f4\u5f84<\/strong>&nbsp;\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e8c\u53c9\u6811\u7684&nbsp;<strong>\u76f4\u5f84<\/strong>&nbsp;\u662f\u6307\u6811\u4e2d\u4efb\u610f\u4e24\u4e2a\u8282\u70b9\u4e4b\u95f4\u6700\u957f\u8def\u5f84\u7684&nbsp;<strong>\u957f\u5ea6<\/strong>&nbsp;\u3002\u8fd9\u6761\u8def\u5f84\u53ef\u80fd\u7ecf\u8fc7\u4e5f\u53ef\u80fd\u4e0d\u7ecf\u8fc7\u6839\u8282\u70b9&nbsp;<code>root<\/code>&nbsp;\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e24\u8282\u70b9\u4e4b\u95f4\u8def\u5f84\u7684&nbsp;<strong>\u957f\u5ea6<\/strong>&nbsp;\u7531\u5b83\u4eec\u4e4b\u95f4\u8fb9\u6570\u8868\u793a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u91cd\u70b9\u662f\u60f3\u660e\u767d\uff0c\u76f4\u5f84\u5c31\u662f\u5de6\u5b50\u6811\u9ad8\u5ea6+\u53f3\u5b50\u6811\u9ad8\u5ea6\u3002\u6240\u4ee5\u76f8\u5f53\u4e8e\u904d\u5386\u4e00\u904d\u540e\u627e\u5230\u8fd9\u4e2a\u548c\u6700\u5927\u7684\u5373\u53ef<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\n    int ans = 0;\n    int depth(TreeNode *t){\n        if( t == nullptr) return 0;\n        int L = depth(t-&gt;left);\n        int R = depth(t-&gt;right);\n        if(L + R &gt; ans) ans = L + R;\n        return max(L , R) + 1;\n    }\npublic:\n    int diameterOfBinaryTree(TreeNode* root) {\n        depth(root);\n        return ans ;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/binary-tree-level-order-traversal\/\">\u4e8c\u53c9\u6811\u7684\u5c42\u5e8f\u904d\u5386<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e0\u9700\u591a\u8a00\u3002\u4f46\u53c8\u4e00\u4e2a\u6df1\u641c\u601d\u8def\u633a\u597d\u7684\uff0c\u4f60\u641c\u5230\u90a3\u4e00\u5c42\u76f4\u63a5\u5f80\u540epush\u5c31\u884c\u4e86\uff0c\u800c\u4e0d\u662f\u771f\u7684\u8981\u5c42\u5e8f\u904d\u5386<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    vector&lt;vector&lt;int&gt;&gt; levelOrder(TreeNode* root) {\n        if(!root) return{};\n        queue&lt;TreeNode *&gt;q;\n        vector&lt;vector&lt;int&gt;&gt; v;\n        q.push(root);\n        int currentNum = 1 , nextNum = 0;\n        vector&lt;int&gt; currentLevel;\n        while(!q.empty()){\n            TreeNode *cur = q.front();\n            q.pop();\n            currentLevel.push_back(cur-&gt;val);\n            currentNum --;\n\n            if(cur-&gt;left) {q.push(cur-&gt;left) ; nextNum++;};\n            if(cur-&gt;right) {q.push(cur-&gt;right); nextNum++;};\n            \n            \/\/\u4e0b\u4e00\u5c42\u8d70\u5b8c\u4e86\n            if(currentNum == 0){\n                currentNum = nextNum;\n                nextNum = 0;\n                v.push_back(currentLevel);\n                currentLevel.clear();\n            }\n        }\n        return v;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/validate-binary-search-tree\/\">\u9a8c\u8bc1\u4e8c\u53c9\u641c\u7d22\u6811<\/a><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-61.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"952\" height=\"448\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-61.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3211\" style=\"width:474px;height:auto\"  sizes=\"auto, (max-width: 952px) 100vw, 952px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u5373\u4e3a\u68c0\u67e5\u4e2d\u5e8f\u904d\u5386\u662f\u5426\u5347\u5e8f\u3002\u5982\u679c\u7528\u4e00\u4e2a\u6570\u7ec4\u6700\u540e\u5c31O(n\uff09\u4e86\uff0c\u4e0d\u4f18\u96c5\u3002\u6211\u624d\u7528\u7684\u662f\u4e00\u4e2a\u53d8\u91cf\uff0c\u53ea\u8981\u6bcf\u904d\u5386\u5230\u4e00\u4e2a\u540e\u4e00\u4e2a\u90fd\u6bd4\u524d\u4e00\u4e2a\u5927\u5c31\u884c\u3002\u8fd9\u91cc\u8981\u8003\u8651INT_MIN\u95ee\u9898\uff0c\u6700\u5f00\u59cb\u6211\u89e3\u51b3\u662f\u518d\u52a0\u4e86\u4e00\u4e2abool\uff0c\u5224\u65ad\u662f\u5426\u51fa\u73b0\u4e24\u6b21INT_MIN\u5373\u53ef<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\n    int temp = INT_MIN;\n    bool isBST = true , isMin = false;\npublic:\n    void midTraversal(TreeNode* root){\n        if(root == 0) return ;\n        if(root-&gt;left) midTraversal(root-&gt;left);\n        if(root-&gt;val &lt;= temp){\n            cout &lt;&lt; \"turn on\";\n            if((root-&gt;val == temp &amp;&amp; temp == INT_MIN) &amp;&amp; !isMin){\n                isMin = true;\n            }\n            else isBST = false;\n        }\n        temp = root-&gt;val;\n        if(root-&gt;right) midTraversal(root-&gt;right);\n    }\n    bool isValidBST(TreeNode* root) {\n        midTraversal(root);\n        return isBST;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/kth-smallest-element-in-a-bst\/\">\u4e8c\u53c9\u641c\u7d22\u6811\u4e2d\u7b2c K \u5c0f\u7684\u5143\u7d20<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u90e8\u8fd8\u662f\u4e2d\u5e8f\u904d\u5386\u5230\u7b2ck\u4e2a\u5143\u7d20\uff08\uff1f\uff09\u79d2\u4e86<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-60.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"973\" height=\"453\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-60.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3210\" style=\"width:492px;height:auto\"  sizes=\"auto, (max-width: 973px) 100vw, 973px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int max_num , ans;\n    void midTraverse(TreeNode* root){\n        if(root == nullptr) return;\n        if(root-&gt;left) midTraverse(root-&gt;left);\n        if(--max_num == 0) ans = root-&gt;val;\n        if(root-&gt;right) midTraverse(root-&gt;right);\n    }\n    int kthSmallest(TreeNode* root, int k) {\n        max_num = k;\n        midTraverse(root);\n        return ans;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/binary-tree-right-side-view\/\">\u4e8c\u53c9\u6811\u7684\u53f3\u89c6\u56fe<\/a><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-62.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1006\" height=\"552\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/02\/image-62.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3212\"  sizes=\"auto, (max-width: 1006px) 100vw, 1006px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>    void tailTraverse(TreeNode* root , int height){\n        if(root == nullptr) return ;\n        if(height &gt; max_height) { ans.push_back(root-&gt;val); max_height++;};\n        if(root-&gt;right) tailTraverse(root-&gt;right , height + 1);\n        if(root-&gt;left) tailTraverse(root-&gt;left , height + 1);\n\n    }\n    vector&lt;int&gt; rightSideView(TreeNode* root) {\n        \/\/ \u540e\u7eed\u904d\u5386\uff0c\u6bcf\u5c42\u9047\u5230\u7b2c\u4e00\u4e2a\u52a0\u8fdb\u53bb\n        tailTraverse(root , 0);\n        return ans;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/flatten-binary-tree-to-linked-list\/\">\u4e8c\u53c9\u6811\u5c55\u5f00\u4e3a\u94fe\u8868<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f4\u63a5\u5faa\u73af\u5c55\u5f00\uff0c\u4f46\u53cd\u6b63\u90fd\u662fO(N)\uff0c\u90a3\u4e48\u76f4\u63a5\u5f00\u4e00\u4e2aO(N)\u7684\u8868\u4f3c\u4e4e\u4e5f\u4e00\u6837<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    void flatten(TreeNode* root) {\n        if(!root) return;\n        TreeNode *head = new TreeNode();\n        TreeNode *cur = head;\n\n        stack&lt;TreeNode *&gt; s;\n        s.push(root);\n        while(!s.empty()){\n            TreeNode *temp = s.top();\n            s.pop();\n            if(temp-&gt;right != nullptr) s.push(temp-&gt;right);\n            if(temp-&gt;left != nullptr) s.push(temp-&gt;left);\n\n            cur-&gt;right = temp;\n            cur-&gt;left = nullptr;\n            cur = cur-&gt;right;\n        }\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/construct-binary-tree-from-preorder-and-inorder-traversal\/\">\u4ece\u524d\u5e8f\u4e0e\u4e2d\u5e8f\u904d\u5386\u5e8f\u5217\u6784\u9020\u4e8c\u53c9\u6811<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f00\u59cb\u4e00\u4e2an2\u4e86\uff0c\u4f30\u8ba1\u662f\u590d\u5236\u65f6\u5019\u592a\u6d6a\u8d39\u4e86\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>TreeNode* buildTree(vector&lt;int&gt;&amp; preorder, vector&lt;int&gt;&amp; inorder) {\n        int n = inorder.size();\n        if(n == 0) return nullptr;\n\n        int mid = preorder&#91;0];\n        TreeNode *newNode = new TreeNode(mid);\n\n        \/\/\u627e\u5230\u4e2d\u5e8f\u904d\u5386\u4e2d\u7684\u4f4d\u7f6e\uff0c\u505c\u5728\u76f8\u7b49\u90a3\u4e2a\u4f4d\u7f6e\n        int i = 0;\n        while(inorder&#91;i] != mid) i++;\n        cout &lt;&lt; i;\n        if( i != 0 ){\n            vector&lt;int&gt; leftPre(preorder.begin() + 1 , preorder.begin()+ i + 1);\n            vector&lt;int&gt; leftIn(inorder.begin() , inorder.begin() + i );\n            newNode-&gt;left = buildTree(leftPre , leftIn);\n        }else{\n            newNode-&gt;left == nullptr;\n        }\n\n        if (i != n - 1){\n            vector&lt;int&gt; rightPre(preorder.begin() + i + 1 ,  preorder.end());\n            vector&lt;int&gt; rightIn(inorder.begin() + i + 1 , inorder.end());\n            newNode-&gt;right = buildTree(rightPre , rightIn);\n        }else{\n            newNode-&gt;right == nullptr;\n        }\n        return newNode;\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f18\u5316\u4e86\u4e00\u4e0b,\u554a\u554a\u554a\u4e3a\u4ec0\u4e48\u8fd8\u662fN2\u590d\u6742\u5ea6\uff0c\u4f46\u786e\u5b9e\u5feb\u4e86\u4e0d\u5c11<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    TreeNode *buildT(vector&lt;int&gt;&amp; preorder, vector&lt;int&gt;&amp; inorder , int pl , int pr , int il , int ir){\n        \/\/ \u95ed\u533a\u95f4\uff0c\u53f3\u8fb9\u5c0f\u4e8e\u5de6\u8fb9\u5219\u4e0d\u5b58\u5728\n        if(pl &gt; pr) return nullptr;\n\n        \/\/ \u6839\u8282\u70b9\u662f\u524d\u5e8f\u904d\u5386\u7b2c\u4e00\u4e2a\n        int rootNum = preorder&#91;pl];\n        TreeNode *newNode = new TreeNode(rootNum);\n\n        \/\/\u4e2d\u5e8f\u904d\u5386\u4e2d\uff0c\u627e\u5230\u6839\u8282\u70b9\u4f4d\u7f6e\n        int i = 0;\n        while(inorder&#91;il + i] != rootNum) i++;\n\n        \/\/ \u524d\u5e8f\u904d\u5386\uff0c\u7b2c\u4e00\u4e2a\u662f\u6839\u8282\u70b9\uff0c\u6240\u4ee5\u4ece\u7b2c\u4e8c\u4e2a\u904d\u5386\u5230\u7b2ci\u4e2a\u8282\u70b9\n        \/\/ \u4e2d\u5e8f\u904d\u5386\uff0c\u4ece\u7b2c\u4e00\u4e2a\u5230\u7b2ci-1\u4e2a\u4f4d\u7f6e\n        newNode-&gt;left = buildT(preorder,inorder, pl + 1 , pl + i , il , il +i - 1 );\n\n        \/\/ \u540e\u9762\u90fd\u4e00\u6837\uff0c\u4ece\u7b2ci+1\u4e2a\u5230\u6700\u540e\u7684\u4f4d\u7f6e\n        newNode-&gt;right = buildT(preorder,inorder, pl + i + 1 , pr , il + i + 1 , ir);\n\n        return newNode;\n\n    }\n    TreeNode* buildTree(vector&lt;int&gt;&amp; preorder, vector&lt;int&gt;&amp; inorder) {\n        int n = inorder.size();\n        return buildT(preorder, inorder , 0 , n -1 ,0 , n -1);\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u540e\u53d1\u73b0\uff0c\u95ee\u9898\u662f\u4e2d\u5e8f\u904d\u5386\uff0c\u627e\u5230\u548c\u524d\u5e8f\u904d\u5386\u76f8\u540c\u7684\u65f6\u5019\uff0c\u4e00\u4e2a\u4e2a\u67e5\u8be2\u592a\u6162\u4e86\u3002\u76f4\u63a5\u54c8\u5e0c\u6620\u5c04\u89e3\u51b3hhhh\u3002\u53ccon\u89e3\u51b3<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\n    unordered_map&lt;int , int&gt; mp;\npublic:\n    TreeNode *buildT(vector&lt;int&gt;&amp; preorder, vector&lt;int&gt;&amp; inorder , int pl , int pr , int il , int ir){\n        \/\/ \u95ed\u533a\u95f4\uff0c\u53f3\u8fb9\u5c0f\u4e8e\u5de6\u8fb9\u5219\u4e0d\u5b58\u5728\n        if(pl &gt; pr) return nullptr;\n\n        \/\/ \u6839\u8282\u70b9\u662f\u524d\u5e8f\u904d\u5386\u7b2c\u4e00\u4e2a\n        int rootNum = preorder&#91;pl];\n        TreeNode *newNode = new TreeNode(rootNum);\n\n        \/\/ \u5feb\u901f\u627e\u5230\u5dee\u4e86\u591a\u5c11\n        int i = mp&#91;rootNum] -il;\n\n        \/\/ \u524d\u5e8f\u904d\u5386\uff0c\u7b2c\u4e00\u4e2a\u662f\u6839\u8282\u70b9\uff0c\u6240\u4ee5\u4ece\u7b2c\u4e8c\u4e2a\u904d\u5386\u5230\u7b2ci\u4e2a\u8282\u70b9\n        \/\/ \u4e2d\u5e8f\u904d\u5386\uff0c\u4ece\u7b2c\u4e00\u4e2a\u5230\u7b2ci-1\u4e2a\u4f4d\u7f6e\n        newNode-&gt;left = buildT(preorder,inorder, pl + 1 , pl + i , il , il +i - 1 );\n\n        \/\/ \u540e\u9762\u90fd\u4e00\u6837\uff0c\u4ece\u7b2ci+1\u4e2a\u5230\u6700\u540e\u7684\u4f4d\u7f6e\n        newNode-&gt;right = buildT(preorder,inorder, pl + i + 1 , pr , il + i + 1 , ir);\n\n        return newNode;\n\n    }\n    TreeNode* buildTree(vector&lt;int&gt;&amp; preorder, vector&lt;int&gt;&amp; inorder) {\n        int n = inorder.size();\n        for(int i = 0 ; i &lt; n ; i++ ){\n            mp&#91;inorder&#91;i]] = i;\n        }\n        return buildT(preorder, inorder , 0 , n -1 ,0 , n -1);\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/path-sum-iii\/\">\u8def\u5f84\u603b\u548c III<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c31\u662f\u6c42\u533a\u95f4\u548c\u4e3a\u4e00\u4e2a\u503c\u7684\u6570\u91cf\u4e00\u6837\u7684\u3002\u6df1\u5ea6\u4f18\u5148\u641c\u7d22\uff0c\u628a\u6bcf\u4e00\u6761\u8def\u5f84\u90fd\u770b\u51fa\u90a3\u4e2a\u8981\u6c42\u7684\u6570\u7ec4\u5373\u53ef\u3002\u56de\u6765\u4e4b\u540e\u628a\u8282\u70b9\u6392\u51fa\uff0c\u89e3\u51b3\u3002\u91cd\u70b9\u8fd8\u662f\u6570\u5b66\u63a8\u5bfc\uff0c\u7406\u89e3\u4e86\u8fd9\u4e00\u6b65\u5c31\u7279\u522b\u597d\u505a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    unordered_map&lt; long long , int &gt; mp;\n    int sum = 0;\n    void dfs(TreeNode* root, long long  prefixSum , int targetSum){\n        \/\/unordered_map\u8bb0\u5f55\u524d\u7f00\u548c\uff0c\u5982\u679c\u627e\u5230\u6709\u5f53\u524d\u524d\u7f00\u548c - targetSum\u7684\uff0c\u8bf4\u660e\u5b58\u5728\u4e00\u4e2a\n        prefixSum += root-&gt;val;\n        sum+= mp&#91;prefixSum - targetSum];\/\/\u6709\u51e0\u4e2a\u7b26\u5408\u8981\u6c42\u52a0\u51e0\u4e2a\n        mp&#91;prefixSum] += 1;\n        if(root-&gt;left) dfs(root-&gt;left , prefixSum , targetSum);\n        if(root-&gt;right) dfs(root-&gt;right , prefixSum , targetSum);\n        mp&#91;prefixSum] -= 1;\n    }\n    int pathSum(TreeNode* root, int targetSum) {\n        mp&#91;0] = 1;\n        if(!root) return 0;\n        dfs(root , 0 , targetSum);\n        return sum;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/lowest-common-ancestor-of-a-binary-tree\/\">\u4e8c\u53c9\u6811\u7684\u6700\u8fd1\u516c\u5171\u7956\u5148<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f00\u59cb\u5927\u6982\u662f\u60f3\u8981\u8bb0\u5f55\u8def\u5f84\uff0c\u867d\u7136\u662fon\u4f46\u662f\u7279\u522b\u6162\u3002\u56e0\u4e3a\u8bb0\u5f55\u4e86\u6574\u6761\u8def\u5f84<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\n    unordered_map&lt;TreeNode* , TreeNode*&gt; mp_p;\n    unordered_map&lt;TreeNode* , TreeNode*&gt; mp_q;\n    int find_p = 0, find_q = 0;\n    void dfs(TreeNode* root,TreeNode* p , TreeNode* q){\n        if(!root) return ;\n        if(root == p) find_p = 1;\n        if(root == q) find_q = 1;\n        if(root-&gt;left){\n            if(!find_p)mp_p&#91;root] = root-&gt;left;\n            if(!find_q)mp_q&#91;root] = root-&gt;left;\n            dfs(root-&gt;left, p ,q ); \n        }\n        if(root-&gt;right){\n            if(!find_p)mp_p&#91;root] = root-&gt;right;\n            if(!find_q)mp_q&#91;root] = root-&gt;right;\n            dfs(root-&gt;right, p , q );\n        }\n    }\npublic:\n    \n    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {\n        \/\/ \u53ea\u8981dfs\u904d\u5386\u5230\uff0c\u8bb0\u5f55\u8def\u5f84\uff0c\u8f6c\u5316\u4e3a\u53cc\u94fe\u8868\u95ee\u9898\u516c\u5171\u524d\u7f00\n        if(root == NULL) return NULL;\n        dfs(root, p , q);\n        TreeNode *same = root;\n        while(mp_p&#91;same] == mp_q&#91;same]){\n            same = mp_p&#91;same];\n        }\n        return same;\n    }\n};<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b54\u6848\u5c31\u611f\u89c9\u662f\u5145\u5206\u5229\u7528\u6bcf\u4e00\u4e2a\u6761\u4ef6\u7684\u89e3\u4e00\u6837\uff0c\u7a0d\u5fae\u4e00\u904d\u5c31\u4e0d\u80fd\u7528\u4e86\u3002p!=q\u8fd9\u4e2a\u6761\u4ef6\u5145\u5206\u5229\u7528\u4e0a\u4e86\u3002\u4e0d\u8fc7\u867d\u7136\u4f46\u662f\u597d\u50cf\u4e5f\u6ca1\u6709\u597d\u591a\u5c11\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>TreeNode* ans;\n    bool dfs(TreeNode* root, TreeNode* p, TreeNode* q) {\n        if (root == nullptr) return false;\n        bool lson = dfs(root-&gt;left, p, q);\n        bool rson = dfs(root-&gt;right, p, q);\n        if ((lson &amp;&amp; rson) || ((root-&gt;val == p-&gt;val || root-&gt;val == q-&gt;val) &amp;&amp; (lson || rson))) {\n            ans = root;\n        } \n        return lson || rson || (root-&gt;val == p-&gt;val || root-&gt;val == q-&gt;val);\n    }\n    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {\n        dfs(root, p, q);\n        return ans;\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/binary-tree-maximum-path-sum\/\">\u4e8c\u53c9\u6811\u4e2d\u7684\u6700\u5927\u8def\u5f84\u548c<\/a><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\n    int maxNum = INT_MIN;\npublic:\n    int calculate(TreeNode* root){\n        \/\/ \u8ba1\u7b97\u5f53\u524d\u6700\u5927\u503c\uff0c\u5373\n        \/\/ dp&#91;root] = max { dp&#91;root-&gt;left] , dp&#91;root-&gt;right]  , 0} + val\n        \/\/ \u5bf9\u4e8e\u6bcf\u4e2aroot ,\u6bd4\u8f83 dp&#91;root-&gt;left] + dp&#91;root-&gt;right] + val\uff0c\u53d6\u51fa\u90a3\u4e2a\u503c\u5373\u53ef\n        \/\/ \u8fd9\u91cc\u53ef\u4ee5\u4e0d\u7528\u52a8\u5f52\u7a7a\u95f4\uff0c\u56e0\u4e3a\u9700\u8981\u7684\u521a\u597d\u8ba1\u7b97\u4e86\n        int left = 0 , right = 0;\n        if(root-&gt;left) left = calculate(root-&gt;left);\n        if(root-&gt;right) right = calculate(root-&gt;right);\n        int ret = max(max(left , right),0);\n        int cur_max = max(ret , left + right ) + root-&gt;val;\n        maxNum = max(cur_max , maxNum);\n        return ret + root-&gt;val;\n    }\n    int maxPathSum(TreeNode* root) {\n        calculate(root);\n        return maxNum;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/rotting-oranges\/\">\u8150\u70c2\u7684\u6a58\u5b50<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">dfs\u8d70\u4e00\u904d\uff0c\u6bcf\u6b21\u68c0\u67e5\u3002\u590d\u6742\u5ea6\u5df2\u7ecf\u6700\u4f18\uff0c\u5177\u4f53\u61d2\u5f97\u4f18\u5316\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int m ;\n    int n ;\n    int isIllegal(int x ,int y){\n        if(x &gt;= 0 &amp;&amp;  x &lt;= m-1 &amp;&amp; y &gt;=0 &amp;&amp; y&lt;= n-1) return true;\n        return false;\n    }\n    int nextTime(vector&lt;vector&lt;int&gt;&gt;&amp; grid){\n        \/\/\u5148\u627e\u51fa\u5168\u90e8\u70c2\u6a58\u5b50\n        vector&lt;vector&lt;int&gt;&gt; vec;\n\n        for(int i = 0 ; i &lt; m ; i ++){\n            for(int j = 0 ; j &lt; n ; j++){\n                if(grid&#91;i]&#91;j] == 2) vec.push_back({i,j});\n            }\n        }\n        int flag = 0;\/\/ 1\u8868\u793a\u6709\u66f4\u65b0\uff0c0\u8868\u793a\u6ca1\u66f4\u65b0\n        for(auto v :vec){\n            int x = v&#91;0]; \/\/m\n            int y = v&#91;1]; \/\/n\n            if(isIllegal( x-1 , y) &amp;&amp; grid&#91;x-1]&#91;y] == 1){\n                    grid&#91;x-1]&#91;y] =2;\n                    flag = 1;\n            }\n            if(isIllegal( x+1 , y) &amp;&amp; grid&#91;x+1]&#91;y] == 1){\n                    grid&#91;x+1]&#91;y] =2;\n                    flag = 1;\n            }\n            if(isIllegal( x , y+1 ) &amp;&amp; grid&#91;x]&#91;y+1] == 1){\n                    grid&#91;x]&#91;y+1] =2;\n                    flag = 1;\n            }\n            if(isIllegal( x , y-1 ) &amp;&amp; grid&#91;x]&#91;y-1] == 1){\n                    grid&#91;x]&#91;y-1] = 2;\n                    flag = 1;\n            }\n        }\n        if(flag == 0){\n            for(int i = 0 ; i &lt; m ; i ++){\n                for(int j = 0 ; j &lt; n ; j++){\n                    if(grid&#91;i]&#91;j] == 1) return -1;\n                }\n            }\n        }\n        return flag;\n    }\n    int orangesRotting(vector&lt;vector&lt;int&gt;&gt;&amp; grid) {\n        m = grid.size();\n        n = grid&#91;0].size();\n        int times = 0;\n        while(1) {\n            int temp = nextTime(grid);\n            \/\/ 1\u8868\u793a\u6709\u66f4\u65b0\n            if(temp == 1) times++;\n            \/\/ -1\u4e0d\u53ef\u80fd \n            else if(temp == -1) return -1;\n            else return times;\n        }\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/course-schedule\/\">\u8bfe\u7a0b\u8868<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u672c\u8d28\u5c31\u662f\u8003\u5bdf\u56fe\u6709\u6ca1\u6709\u73af\u3002\u90a3\u4e48\u627e\u5165\u5ea6\u4e3a0\u70b9\uff0c\u5f00\u59cb\u904d\u5386\u3002\u6700\u540e\u65e0\u6cd5\u904d\u5386\u65f6\u5019\uff0c\u5982\u679c\u6ca1\u6709\u5165\u5ea6\u4e3a0\u70b9\u5374\u8fd8\u662f\u6709\u8fb9\uff0c\u5219\u8bf4\u660e\u6709\u73af\uff0c\u4e0d\u7b26\u5408\u6761\u4ef6<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    bool canFinish(int numCourses, vector&lt;vector&lt;int&gt;&gt;&amp; prerequisites) {\n        vector&lt;int&gt; indegs(numCourses , 0);\n        vector&lt;vector&lt;int&gt;&gt; edges(numCourses);\n        for(auto v : prerequisites){\n            \/\/\u8981\u5b660\uff0c\u5148\u8981\u4f1a1\uff0c\u4e5f\u5c31\u662f1\u6307\u54110\u7684\u8fb9\n            edges&#91;v&#91;1]].push_back(v&#91;0]);\n            \/\/\u6dfb\u52a0\u6bcf\u5929\u8fb9\u7684\u5165\u5ea6\n            indegs&#91;v&#91;0]]++;\n        }\n\n        \/\/ \u73b0\u5728\u5bf9\u4e8e\u6bcf\u4e00\u4e2a\u5165\u5ea6\u4e3a0\u7684\u9876\u70b9\uff0c\u5f00\u59cb\u904d\u5386\n        queue&lt;int&gt; nodes;\n        for(int i = 0 ; i &lt; numCourses ;i++){\n            if(indegs&#91;i] == 0) {\n                nodes.push(i);\n            }\n        }\n        \/\/\u5f00\u59cb\u4ece\u5165\u5ea6\u4e3a0\u70b9\u5f00\u59cb\u904d\u5386\uff0c\u5982\u679c\u6ca1\u6709\u5165\u5ea6\u4e3a0\u70b9\u5374\u8fd8\u662f\u6709\u8fb9\uff0c\u5219\u8bf4\u660e\u6709\u73af\uff0c\u4e0d\u7b26\u5408\u6761\u4ef6\n        while(nodes.size()){\n            int node = nodes.front();\n            nodes.pop();\n            \/\/ \u628a\u5b83\u6307\u7684\u6bcf\u4e00\u6761\u8fb9\u52a0\u8fdb\u53bb\uff0c\u5165\u5ea6\u51cf\u5c11\n            for(auto edge : edges&#91;node]){\n                if(--indegs&#91;edge] == 0) nodes.push(edge);\n            }\n            numCourses--;\n        }\n        if(!numCourses) return true;\n        return false;\n        \n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/implement-trie-prefix-tree\/\">\u5b9e\u73b0 Trie (\u524d\u7f00\u6811)<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u4e2a\u8282\u70b9\u4e00\u4e2a\u5b57\u6bcd&#8230;..<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Trie {\n\nstruct Node{\n    vector&lt;bool&gt; chs;\n    vector&lt;Node *&gt; nodes;\n    int isEnd = 0;\n    char selfCh ;\n\n    Node(int isEnd = 0, char ch = ' '):isEnd(isEnd) , selfCh(ch){chs.resize(26 , false);}\n    \/\/ \u627e\u7279\u5b9a\u7ed3\u679c\u7684\u8282\u70b9\n    Node *searchNode(char ch){\n        for(auto node : nodes){\n            if(node-&gt;selfCh ==  ch){\n                return node;\n            }\n        }\n        return nullptr;\n    }\n\n    Node* pushNewNode( char ch){\n        Node *node = new Node(0 , ch);\n        nodes.push_back(node);\n        return node;\n    }\n};\n\nNode *head ;\npublic:\n\n    Trie() {\n        head = new Node();\n    }\n    \n    void insert(string word) {\n        int n = word.length();\n        Node *start = head;\n        \/\/ \u904d\u5386\u5230\u6700\u540e\u4e00\u4e2a\n        for(int i = 0 ; i &lt; n ; i++){\n            \/\/\u5982\u679c\u5df2\u7ecf\u63d2\u5165\u8fc7\u4e86\uff0c\u53bb\u627e\u8fd9\u4e2a\u8282\u70b9\n            if(start-&gt;chs&#91;word&#91;i] - 'a'] == true ){\n                start = start-&gt;searchNode(word&#91;i]);\n            }\n            \/\/ \u6ca1\u63d2\u5165\u8fc7\uff0c\u5c31\u63d2\u5165\u5e76\u8bbe\u7f6e\u4e3atrue\n            else{\n                start-&gt;chs&#91;word&#91;i] - 'a'] = true;\n                start = start-&gt;pushNewNode(word&#91;i]);\n            }\n        }\n        start-&gt;isEnd = 1;\n    }\n    \n    bool search(string word) {\n        Node *start = head;\n        for(auto ch : word){\n            if(start-&gt;chs&#91;ch - 'a'] == true){\n                start = start-&gt;searchNode(ch);\n            } else{\n                return false;\n            }\n        }\n        return start-&gt;isEnd;\n    }\n    \n    bool startsWith(string prefix) {\n        Node *start = head;\n        for(auto ch : prefix){\n            if(start-&gt;chs&#91;ch - 'a'] == true){\n                start = start-&gt;searchNode(ch);\n            } else{\n                return false;\n            }\n        }\n        return true;\n    }\n};\n\n\/**\n * Your Trie object will be instantiated and called as such:\n * Trie* obj = new Trie();\n * obj-&gt;insert(word);\n * bool param_2 = obj-&gt;search(word);\n * bool param_3 = obj-&gt;startsWith(prefix);\n *\/<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/number-of-islands\/\">\u5c9b\u5c7f\u6570\u91cf<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u627e\u5230\u8282\u70b9\u4e4b\u540e\uff0c\u5c31\u628a\u5b83\u5468\u8fb9\u5168\u90e8\u90fd\u53d8\u62100\u3002\u6e05\u9664\u8fd9\u4e00\u8fb9\u5730\u3002\u8df3\u51e0\u6b21\u5c31\u662f\u51e0\u4e2a\u5c9b\u3002\u4e0d\u8fc7\u6709\u51e0\u4e2a\u4f18\u5316\u7684\u70b9\uff0c\u4e00\u662fpair\u5f88\u5feb\uff0c\u4e8c\u662f\u626b\u5230\u5468\u8fb9\u662f1\u76f4\u63a5\u8ba9\u4ed6\u4e3a0\uff0c\u907f\u514d\u591a\u6b21\u91cd\u590d\u5224\u65ad\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int m ;\n    int n ;\n    inline bool isIllegal(int x , int y){\n        return (x &gt;= 0 &amp;&amp; x &lt;= m -1 &amp;&amp; y &gt;= 0 &amp;&amp; y &lt;= n-1) ;\n    }\n    \n    int numIslands(vector&lt;vector&lt;char&gt;&gt;&amp; grid) {\n        m = grid.size();\n        n = grid&#91;0].size();\n\n        int islandNum = 0;\n        for(int i = 0 ; i &lt; m ; i++){\n            for(int j = 0 ; j &lt; n ; j++){\n                if(grid&#91;i]&#91;j] == '1'){\n                    islandNum++;\n                    \/\/\u627e\u5230\u8282\u70b9\u4e4b\u540e\uff0c\u5c31\u628a\u5b83\u5468\u8fb9\u5168\u90e8\u90fd\u53d8\u62100\u3002\u6e05\u9664\u8fd9\u4e00\u8fb9\u5730\n                    queue&lt;pair&lt;int,int&gt;&gt; q;\n                    q.push({i,j});\n                    grid&#91;i]&#91;j]='0';\n                    while(!q.empty()){\n                        auto v = q.front();\n                        q.pop();\n                        int x = v.first , y = v.second;\n                        if(isIllegal(x-1,y) &amp;&amp; grid&#91;x-1]&#91;y] == '1') {q.push({x-1,y}); grid&#91;x-1]&#91;y] = '0';}\n                        if(isIllegal(x+1,y) &amp;&amp; grid&#91;x+1]&#91;y] == '1') {q.push({x+1,y}); grid&#91;x+1]&#91;y] = '0';}\n                        if(isIllegal(x,y-1) &amp;&amp; grid&#91;x]&#91;y-1] == '1') {q.push({x,y-1}); grid&#91;x]&#91;y-1] = '0';}\n                        if(isIllegal(x,y+1) &amp;&amp; grid&#91;x]&#91;y+1] == '1') {q.push({x,y+1}); grid&#91;x]&#91;y+1] = '0';}\n                    }\n                }\n            }\n        }\n        return islandNum;\n    }\n};<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u56de\u6eaf\u7b97\u6cd5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u5982\u52a8\u6001\u89c4\u5212\uff0c\u4f46\u6709\u4e9b\u52a8\u6001\u89c4\u5212\u8fd8\u771f\u4e0d\u884c\u3002\u672c\u8d28\u5c31\u662f\u9012\u5f52\uff0c\u9012\u5f52\u7684\u597d\u5c31\u884c\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/permutations\/\">\u5168\u6392\u5217<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u7c7b\u7b97\u6cd5\u8c8c\u4f3c\u4e4b\u524d\u6ca1\u5b66\u8fc7\uff0c\u4e00\u70b9\u611f\u89c9\u90fd\u6ca1\u6709\u3002\u4f46\u672c\u8d28\u5c31\u662f\u9012\u5f52<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    \n    vector&lt;vector&lt;int&gt;&gt; permute(vector&lt;int&gt;&amp; nums) {\n        int n = nums.size();\n        int cur = 0;\n\n        vector&lt;vector&lt;int&gt;&gt; ans;\n        calculate(ans , nums , 0 , n);\n        return ans;\n\n    }\n    \/\/ n\u662f\u957f\u5ea6 cur\u662f\u5f53\u524d\u4f4d\n    void calculate(vector&lt;vector&lt;int&gt;&gt; &amp;ans , vector&lt;int&gt; nums , int cur , int n){\n        \/\/ \u6700\u540e\u4e00\u4f4d\u4e86\uff0c\u53ef\u4ee5\u63d2\u5165\n        if(cur == n - 1) ans.push_back(nums);\n        else{\n            \/\/ \u4e0d\u662f\u6700\u540e\u4e00\u4f4d\uff0c\u4f9d\u6b21\u4ea4\u6362\n            for(int i = cur ; i &lt; n; i++){\n                swap(nums&#91;i] , nums&#91;cur]);\n                calculate(ans , nums , cur + 1 , n);\n                swap(nums&#91;i] , nums&#91;cur]);\n            }\n        }\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/subsets\/\">\u5b50\u96c6<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u904d\u8fc7\u7684\u5c45\u7136\u662f\u8fd9\u79cd\u6a21\u6a21\u7cca\u7cca\u7684\uff0c\u6655\u6655\u7684\u5f88\u795e\u5947\u5c31\u8fc7\u4e86<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; subsets(vector&lt;int&gt;&amp; nums) {\n        vector&lt;vector&lt;int&gt;&gt; ans;\n        vector&lt;int&gt; curs;\n        int cur = 0 , n = nums.size();\n\n        ans.push_back({});\n        sub(ans , nums ,curs ,cur , n);\n        return ans;\n    }\n\n    void sub(vector&lt;vector&lt;int&gt;&gt; &amp;ans , vector&lt;int&gt; nums , vector&lt;int&gt; curs , int cur , int n ) {\n        \/\/\u4ece\u5f53\u524d\u4f4d\u7f6e\u904d\u5386\n        for(int i = cur ; i &lt; n ; i++){\n            \/\/ curs\u7ef4\u62a4\u76ee\u524d\u96c6\u5408\uff0c\u52a0\u5165\u4e00\u4e2a\u65b0\u6570\u5b57\n            curs.push_back(nums&#91;i]);\n            \/\/ \u7b54\u6848\u5c31\u65b0\u52a0\u4e00\u79cd\n            ans.push_back(curs);\n            \/\/ \u63a5\u7740\u5411\u540e\u904d\u5386\u51fa\u5168\u90e8\n            sub(ans , nums , curs , i + 1 , n);\n            \/\/ \u53ef\u4ee5\u6392\u51fa\u6765\u4e86\uff0c\u518d\u63d2\u5165\u5176\u4ed6\u6570\u5b57\u3002\u6ce8\u610f\u4e3a\u4e86\u907f\u514d\u91cd\u590d\uff0c\u53ea\u53ef\u4ee5\u5bf9\u8fd9\u4e2a\u6570\u5b57\u540e\u9762\u7684\u6570\u5b57\u518d\u64cd\u4f5c\u3002\u53ef\u4ee5\u60f3\u8c61\u4e00\u4e0b\u81ea\u5df1\u5982\u4f55\u5168\u6392\u5217\u4e00\u4e2a\u6570\u7ec4\uff0c\u4ece\u7b2c\u4e00\u4e2a\u6570\u5f00\u59cb\uff0c\u518d\u4ece\u7b2c\u4e8c\u4e2a\u6570\u4e0d\u5f80\u524d\u3002\n            curs.pop_back();\n        }\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/letter-combinations-of-a-phone-number\/\">\u7535\u8bdd\u53f7\u7801\u7684\u5b57\u6bcd\u7ec4\u5408<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8c8c\u4f3c\u7406\u89e3\u8fd9\u4e2a\u56de\u6eaf\u7684\u611f\u89c9\u5c31\u5f88\u597d\u5904\u7406\u4e86\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    unordered_map&lt;char , string&gt; mp;\n    vector&lt;string&gt; letterCombinations(string digits) {\n        if(digits == \"\") return {};\n        mp&#91;'2'] = \"abc\";\n        mp&#91;'3'] = \"def\";\n        mp&#91;'4'] = \"ghi\";\n        mp&#91;'5'] = \"jkl\";\n        mp&#91;'6'] = \"mno\";\n        mp&#91;'7'] = \"pqrs\";\n        mp&#91;'8'] = \"tuv\";\n        mp&#91;'9'] = \"wxyz\";\n\n        vector&lt;string&gt; ans;\n        string curs ;\n        int cur = 0 , n = digits.length();\n        dep(ans, curs , digits , cur , n);\n        return ans;\n    }\n\n    void dep(vector&lt;string&gt; &amp;ans , string curs , string &amp;digits , int cur , int n){\n        if(cur == n) ans.push_back(curs);\n        else{\n            for(auto ch : mp&#91;digits&#91;cur]]){\n                curs.push_back(ch);\n                dep(ans , curs , digits , cur + 1, n);\n                curs.pop_back();\n            }\n        }\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/combination-sum\/\">\u7ec4\u5408\u603b\u548c<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e00\u6b21\u9519\u4e86\u3002\u5982\u679c\u5f00\u59cb\u7684\u6570\u7ec4\u4e0d\u6392\u5e8f\u7684\u8bdd\uff0c\u90a3\u4e48\u51fa\u73b0 [2,3,3]\u548c[3,2,2]\u4e4b\u7c7b\u60c5\u51b5\u53d1\u751f\uff0c\u5982\u679c\u62cd\u6392\u597d\u5e8f\u987a\u7740\u9009\u5c31\u6ca1\u95ee\u9898\u4e86\u3002\u6570\u7ec4\u6700\u540e\u662fback\uff0c\u8981\u8bb0\u4f4f\uff08\uff09\uff08\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; combinationSum(vector&lt;int&gt;&amp; candidates, int target) {\n        vector&lt;vector&lt;int&gt;&gt; ans;\n        int curSum = 0;\n        vector&lt;int&gt; vec;\n        sort(candidates.begin() , candidates.end());\n        sub(candidates , ans , target , curSum , vec);\n        return ans;\n    }\n    void sub(vector&lt;int&gt;&amp; candidates, vector&lt;vector&lt;int&gt;&gt; &amp;ans , int target , int curSum , vector&lt;int&gt; vec){\n        \/\/ \u8d85\u8fc7\u6700\u5927\uff0c\u80af\u5b9a\u4e0d\u884c\n        if(curSum &gt; target) return ;\n        \/\/ \u7b49\u4e8e\uff0c\u5219\u8bf4\u660e\u53ef\u4ee5\n        else if(curSum == target) ans.push_back(vec);\n        else{\n            \/\/ \u987a\u7740\u904d\u5386\u6bcf\u4e00\u4e2a\uff0c\u5fc5\u987b\u4e0d\u5c0f\u4e8e\u524d\u4e00\u4e2a\u6570\uff08\u7528curSum\u4e3a0\u4ee3\u8868\u7b2c\u4e00\u6b21\u6765\u7684\u65f6\u5019\uff09\n            for(auto can : candidates){\n                if(curSum == 0 || can &gt;= vec.back()){\n                    vec.push_back(can);\n                    sub(candidates , ans , target , curSum + can , vec);\n                    vec.pop_back();\n                }\n            }\n        }\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/generate-parentheses\/\">\u62ec\u53f7\u751f\u6210<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">c++\u91cc\u9762\u7b49\u53f7\u4e0d\u4f20\u9012 :joker:\uff0c\u4e5f\u5c31\u662f\u8bf4\u522b\u60f3\u7740a == b == c\uff0c\uff0c\uff0c\u5176\u5b83\u7684\u903b\u8f91\u8fd8\u662f\u5f88\u663e\u7136\u7684\u3002\u4e2d\u95f4\u5224\u65ad\u903b\u8f91\u6709\u4e9b\u5197\u4f59\uff0c\u4f46\u6ca1\u4e8b\uff0c\u8fd9\u6837\u6bd4\u8f83\u5bb9\u6613\u8bfb\uff08\uff09\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    vector&lt;string&gt; generateParenthesis(int n) {\n        vector&lt;string&gt; ans;\n        dep(ans , \"\" , 0 , 0 , n);\n        return ans;\n    }\n\n    void dep(vector&lt;string&gt; &amp; ans , string cur , int l , int r ,int n){\n        if(l == r &amp;&amp; l== n) ans.push_back(cur);\n        else{\n            \/\/ \u5982\u679c\u5de6\u62ec\u53f7 = \u53f3\u62ec\u53f7\uff0c\u5219\u8bf4\u660e\u53ea\u80fd \u52a0\u5de6\u62ec\u53f7.\u53cd\u4e4b\u90fd\u53ef\u4ee5\n            if(l == r){\n                cur.push_back('(');\n                dep(ans , cur , l + 1, r, n);\n                cur.pop_back();\n            }\n            else if(l &lt; n ){\n                cur.push_back('(');\n                dep(ans , cur , l + 1, r, n);\n                cur.pop_back();\n                cur.push_back(')');\n                dep(ans , cur , l, r + 1, n);\n                cur.pop_back();\n            }\n            else{\n                cur.push_back(')');\n                dep(ans , cur , l, r + 1, n);\n                cur.pop_back();\n            }\n        }\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/word-search\/\">\u5355\u8bcd\u641c\u7d22<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u591a\u770b\u51e0\u773c\u98982333\uff0c\u521d\u59cb\u6761\u4ef6\u770b\u9519\u767d\u5fd9\u6d3b\u534a\u5929<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    vector&lt;vector&lt;bool&gt;&gt; mp;\n    bool exist(vector&lt;vector&lt;char&gt;&gt;&amp; board, string word) {\n        \/\/ \u5bf9\u9996\u5b57\u6bcd\u6df1\u5ea6\u4f18\u5148\u904d\u5386\n        int x = board.size() , y = board&#91;0].size(),lens = word.length();\n        \/\/\u521d\u59cb\u5316\n        mp.resize(x);\n        for(int i = 0 ; i &lt; x ; i++) mp&#91;i].resize(y , false);\n        for(int i = 0 ; i &lt; x ; i++){\n            for(int j = 0 ; j &lt; y ; j++){\n                if(dfs(i , j , word , board , lens , x , y , 0 )){\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n    bool dfs(int i , int j , string &amp; word ,vector&lt;vector&lt;char&gt;&gt;&amp; board, int lens , int x , int y , int depth){\n        if(lens == depth) return true;\n        else{\n            if(i &lt; 0 || j &gt; y-1 || j &lt; 0 || i &gt; x-1) return false;\n            if(mp&#91;i]&#91;j]) return false;\n            else if(word&#91;depth] != board&#91;i]&#91;j])  return false;\n            else{\n                mp&#91;i]&#91;j] = true;\n                bool ans = dfs(i+1,j,word,board,lens,x,y,depth+1) || dfs(i-1,j,word,board,lens,x,y,depth+1) \n                || dfs(i,j+1,word,board,lens,x,y,depth+1) || dfs(i,j-1,word,board,lens,x,y,depth+1) ;\n                mp&#91;i]&#91;j] = false;\n                return ans;\n            }\n        }\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/palindrome-partitioning\/\">\u5206\u5272\u56de\u6587\u4e32<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u8fd9\u4e2a\u5c0f\u4f18\u5316\u786e\u5b9e\u5feb\u4e86\u4e00\u70b9\uff0c\u770b\u5b83\u5206\u6790\u590d\u6742\u5ea6\u4ece\uff082^n\u5230n^2\u4e86\uff0c\u4f46\u662f\u5e76\u6ca1\u6709\u5feb\u591a\u5c1123333\uff0c\u770b\u6765\u8fd8\u662f\u6570\u636e\u91cf\u592a\u5c11\u4e86\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; dp;\n    vector&lt;vector&lt;string&gt;&gt; partition(string s) {\n        \/\/ \u5148\u5b9e\u73b0\u4e00\u4e2a\u68c0\u6d4b\u533a\u95f4\u662f\u5426\u662f\u56de\u6587\u7684\uff0c\u7528\u4e4b\u524d\u7684\u52a8\u6001\u89c4\u5212\uff0c\u590d\u6742\u5ea6o(n2)\uff0c\n        \/\/ \u63a5\u7740partition\uff0c\u4f9d\u6b21\u5f80\u540e\u3002\u5982\u679c\u8fd9\u4e2a\u662f\u56de\u6587\u533a\u95f4\uff0c\u90a3\u5c31\u52a0\u8fdb\u53bb\uff08\u8fd9\u91cc\u7531\u4e8e\u90fd\u7b97\u5b8c\u4e86\uff0c\u68c0\u6d4bo1\u5c31\u5b8c\u6210\uff0c\u4e0d\u7136\u5f88\u591a\u91cd\u590d\u8ba1\u7b97\uff09\n        \/\/ \u9000\u51fa\u6761\u4ef6\u5c31\u662f\u5212\u5206\u5230\u6700\u540e\u9762\u4e86\n        vector&lt;vector&lt;string&gt;&gt; ans;\n        vector&lt;string&gt; cur;\n        int start = 0;\n        int n = s.length();\n        setDp(s, n);\n        part(s , ans , cur , start , n);\n        return ans;\n    }\n    void setDp(string s , int n){\n        \/\/ dp&#91;i]&#91;j] = dp&#91;i+1]&#91;j-1] &amp;&amp; s&#91;i] == s&#91;j]\n        dp.resize(n);\n        for(int i = 0 ; i &lt; n ; i++) dp&#91;i].resize(n);\n        \n        for(int j = 0 ; j &lt; n ; j ++){\n            for(int i = 0 ; i &lt; n - j; i++){\n                if(j == 0) dp&#91;i]&#91;i+j] = 1;\n                else if(j == 1) dp&#91;i]&#91;i+j] = int(s&#91;j+i] == s&#91;i]);\n                else {\n                    dp&#91;i]&#91;i+j] = dp&#91;i+1]&#91;i+j-1] &amp;&amp; int(s&#91;i] == s&#91;j+i]);\n                }\n            }\n        }\n    }\n\n    int check(int start , int end , string &amp;s){\n        return dp&#91;start]&#91;end];\n    }\n    void part(string s ,vector&lt;vector&lt;string&gt;&gt; &amp;ans, vector&lt;string&gt; cur , int start , int n ){\n        if(start == n) ans.push_back(cur);\n\n        for(int i = start ; i &lt; n ; i++){\n            \/\/ \u5982\u679c\u662f\u56de\u6587\uff0c\u5c31\u63d2\u5165\u9012\u5f52\u540e\u7eed\n            if(check(start , i , s) == 1){\n                string subStr(s.begin() + start , s.begin() + i + 1);\n                cur.push_back(subStr);\n                part(s , ans , cur , i + 1, n);\n                cur.pop_back();\n            }\n        }\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/n-queens\/\">N \u7687\u540e<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5927\u540d\u9f0e\u9f0e\uff0c\u4f46\u662f\u611f\u89c9\u5e76\u4e0d\u96be\u3002\u90fd\u662f\u4e00\u4e2a\u590d\u6742\u5ea6\u91cf\u7ea7\uff0c\u4e0d\u77e5\u9053\u6211\u7684\u4e3a\u4ec0\u4e48\u56de\u6162\u8fd9\u4e48\u591a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; matrix;\n    vector&lt;vector&lt;string&gt;&gt; solveNQueens(int n) {\n        vector&lt;string&gt; v(n);\n        for(int i = 0 ; i &lt; n ; i++) v&#91;i].resize(n,'.');\n        vector&lt;vector&lt;string&gt;&gt; ans ;\n        dep(0,n,0,0,v,ans);\n        return ans;\n    }\n    \n    bool isIllegal ( int x, int y){\n        for(auto key : matrix){\n            if( key&#91;1] == y || abs(y - key&#91;1]) == abs(x - key&#91;0])){\n                return false;\n            }\n        }\n        return true;\n    }\n    void dep(int cur , int n  , int x, int y,  vector&lt;string&gt; &amp;v , vector&lt;vector&lt;string&gt;&gt; &amp;ans ){\n        if(cur == n) ans.push_back(v);\n        else{\n            \/\/ \u6bcf\u6b21\u4ece\u4e0b\u4e00\u884c\u8fed\u4ee3\n            for(int j = 0 ; j &lt; n ; j++){\n                if(isIllegal(x,j)){\n                    v&#91;x]&#91;j] = 'Q';\n                    matrix.push_back({x,j});\n                    dep(cur+1 , n , x + 1 , 0 , v, ans);\n                    matrix.pop_back();\n                    v&#91;x]&#91;j] = '.';\n                }\n            }\n        }\n\n    }\n};<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u627e\u5230\u4e86\uff01\uff01\uff01\u53cc\u53cc\u6700\u4f18 vector&lt;vector&lt;int&gt;&gt;\u901f\u5ea6\u663e\u8457\u9ad8\u4e8evector&lt;pair&lt;int,int&gt;&gt;\uff0c\u4e00\u4fee\u6539\u5168\u90e8\u6700\u4f18\uff01gpt\u771f\u4e0d\u884c\u3002\u6ce8\u610f\u7684\u70b9\u662f\u4e00\u884c\u627e\u5b8c\u76f4\u63a5\u4e0b\u4e00\u884c\u5f00\u59cb\uff0c\u8282\u7701\u65f6\u95f4\u3002\u8fd9\u6837\u68c0\u67e5\u65f6\u5019\uff0c\u4e5f\u4e0d\u7528\u68c0\u67e5\u884c\u7684\u95ee\u9898\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/03\/image-9.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"904\" height=\"594\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/03\/image-9.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3244\"  sizes=\"auto, (max-width: 904px) 100vw, 904px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    vector&lt;pair&lt;int,int&gt;&gt; matrix;\n    vector&lt;vector&lt;string&gt;&gt; solveNQueens(int n) {\n        vector&lt;string&gt; v(n);\n        for(int i = 0 ; i &lt; n ; i++) v&#91;i].resize(n,'.');\n        vector&lt;vector&lt;string&gt;&gt; ans ;\n        dep(0,n,0,0,v,ans);\n        return ans;\n    }\n    \n    bool isIllegal ( int x, int y){\n        for(auto key : matrix){\n            if( key.second == y || abs(y - key.second) == abs(x - key.first)){\n                return false;\n            }\n        }\n        return true;\n    }\n    void dep(int cur , int n  , int x, int y,  vector&lt;string&gt; &amp;v , vector&lt;vector&lt;string&gt;&gt; &amp;ans ){\n        if(cur == n) ans.push_back(v);\n        else{\n            for(int j = 0 ; j &lt; n ; j++){\n                if(isIllegal(x,j)){\n                    v&#91;x]&#91;j] = 'Q';\n                    matrix.push_back({x,j});\n                    dep(cur+1 , n , x + 1 , 0 , v, ans);\n                    matrix.pop_back();\n                    v&#91;x]&#91;j] = '.';\n                }\n            }\n        }\n\n    }\n};<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u5206\u67e5\u627e<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fb9\u754c\u6761\u4ef6\u592a\u592a\u592a\u5bb9\u6613\u9519\u4e86\uff0c\u6240\u4ee5\u603b\u7ed3\u4e86\u56db\u79cd\u60c5\u51b5\uff0c\u591f\u7528\u4e86  <\/p>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-8f761849 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/03\/image-10.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"404\" height=\"591\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/03\/image-10.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3246\"  sizes=\"auto, (max-width: 404px) 100vw, 404px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/03\/image-11-1024x493.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"493\" data-original=\"https:\/\/www.haruhi.fans\/wp-content\/uploads\/2025\/03\/image-11-1024x493.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-3247\" style=\"width:628px;height:auto\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u539f\u7406\u6765\u8bf4\uff0c\u4e2d\u95f4\u7684m\u4e00\u5b9a\u5728\u95ed\u533a\u95f4\uff080,n-1\uff09\u5408\u6cd5\u6027\u6ca1\u95ee\u9898\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e2a\u53d6\u503c\uff0c\u4fdd\u8bc1\u5de6\u53f3l,r\u4e00\u5b9a\u662f\u4fdd\u6301\u5728\u81ea\u5df1\u7684\u533a\u95f4\u5185\uff0c\u4e0d\u8fc7\u8d85\u8d8a\u533a\u95f4\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837\uff0c\u53ea\u8981\u521d\u59cb\u7684isBlue\u8bbe\u7f6e\u7684\u597d\uff0c\u5c31\u53ef\u4ee5\u5904\u7406\u6240\u6709\u60c5\u51b5<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/search-insert-position\/\">\u641c\u7d22\u63d2\u5165\u4f4d\u7f6e<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">tmd\uff0c\u4e8c\u5206\u67e5\u627e\u5c31\u9519\u9519\u9519\uff0c\u8fb9\u754c\u6761\u4ef6\u4e0d\u5199\u8fd8\u771f\u4e0d\u4f1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int searchInsert(vector&lt;int&gt;&amp; nums, int target) {\n        int size = nums.size();\n        int left = 0, right = nums.size() - 1;\n        while(left &lt;= right){\n            int mid = left + (right - left) \/ 2;\n            if(nums&#91;mid] &lt; target){\n                left = mid + 1;\n            }else{\n                right = mid - 1;\n            }\n        }\n        return left;\n    }\n};<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528\u5408\u7406\u65b9\u6cd5\uff0c\u79d2\u4e86<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int searchInsert(vector&lt;int&gt;&amp; nums, int target) {\n        \/\/ \u8d85\u51fa\u539f\u672c\u7684\u5916\u9762\n        int left = -1 , right = nums.size();\n        \/\/ \u60f3\u8981\u63d2\u5165\u7b2c\u4e00\u4e2a&gt;= target\u7684\u4f4d\u7f6e\n        while(left + 1 != right){\n            int mid = (left + right) \/ 2;\n            if(nums&#91;mid] &lt; target){\n                left = mid;\n            }else{\n                right = mid;\n            }\n        }\n        return right;\n    }\n};\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/search-a-2d-matrix\/\">\u641c\u7d22\u4e8c\u7ef4\u77e9\u9635<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">nnd\uff0c\u521a\u5b66\u5b8c\u65b0\u65b9\u6cd5\u5c31\u7ed9\u6211\u6765\u7279\u4f8b\u662f\u5427\u3002\u8fd9\u4e2a\u76f8\u5f53\u4e8e\u8981\u6c42\uff0c\u7b2c\u4e00\u4e2a&lt;=\u7684\u6570\u5b57\uff0c\u4f46\u662f\u8fd8\u5fc5\u987b\u5728\u5408\u7406\u8303\u56f4\u5185\u3002\u90a3\u5c31\u6253\u8865\u4e012333333333\u3002\u4e0d\u8fc7\u4e0d\u5f97\u4e0d\u8bf4\uff0c\u771f\u7684\u63d0\u9ad8\u4e86\u597d\u591a\u597d\u591a\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    bool searchMatrix(vector&lt;vector&lt;int&gt;&gt;&amp; matrix, int target) {\n        int n_x = matrix.size() , n_y = matrix&#91;0].size();\n        int up = -1 , down = n_x , left = -1, right = n_y ;\n\n        \/\/ \u627e\u5230\u7b2c\u4e00\u4e2a&lt;= \u5143\u7d20\n        while(up + 1 != down){\n            int mid = (up + down ) \/2;\n            if(matrix&#91;mid]&#91;0] &lt;= target){\n                up = mid;\n            }else {\n                down = mid;\n            }\n        }\n        if(up == -1) up = 0;\n\n        while(left + 1 != right){\n            int mid = ( left + right) \/ 2;\n            if(matrix&#91;up]&#91;mid] &lt;= target){\n                left = mid;\n            } else {\n                right = mid;\n            }\n        }\n        if(left == -1) left = 0;\n        return (matrix&#91;up]&#91;left] == target);\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/find-first-and-last-position-of-element-in-sorted-array\/\">\u5728\u6392\u5e8f\u6570\u7ec4\u4e2d\u67e5\u627e\u5143\u7d20\u7684\u7b2c\u4e00\u4e2a\u548c\u6700\u540e\u4e00\u4e2a\u4f4d\u7f6e<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6253\u8865\u4e01\uff0c\u723d\u3002\u5168\u90e8\u62ff\u4e0b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    vector&lt;int&gt; searchRange(vector&lt;int&gt;&amp; nums, int target) {\n        vector&lt;int&gt; ans;\n        \/\/ \u68c0\u6d4b&lt;\u7684right \u548c &gt;\u7684left\u3002\u6ce8\u610f\u53d6\u5230\u7684\u503c\u548c\u6700\u540e\u7b54\u6848\u4e0d\u76f8\u540c\u8981\u8bbe\u7f6e\u4e3a-1\n        int n = nums.size();\n        int left = -1 , right = n;\n\n        while(left + 1 != right){\n            int mid = (left + right ) \/2 ;\n            if(nums&#91;mid] &lt; target ){\n                left = mid;\n            }else{\n                right = mid;\n            }\n        }\n        if(right != n &amp;&amp; nums&#91;right] == target) ans.push_back(right);\n        else ans.push_back(-1);\n\n        left = -1 , right = n;\n        while(left + 1 != right){\n            int mid = (left + right ) \/2 ;\n            if(nums&#91;mid] &lt;= target ){\n                left = mid;\n            }else{\n                right = mid;\n            }\n        }\n        if(left != -1 &amp;&amp; nums&#91;left] == target) ans.push_back(left);\n        else ans.push_back(-1);\n        return ans;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/search-in-rotated-sorted-array\/\">\u641c\u7d22\u65cb\u8f6c\u6392\u5e8f\u6570\u7ec4<\/a><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/min-stack\/\">\u6700\u5c0f\u6808<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u597d\u6ca1\u610f\u601d\u7684\u9898\u76ee<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class MinStack \n{\n    stack&lt;pair&lt;int,int&gt;&gt; sk;\npublic:\n\n    MinStack()  {}\n    \n    void push(int val) \n    {\n        sk.push({val,min(val,getMin())});\n    }\n    \n    void pop() \n    {\n        return sk.pop();\n    }\n    \n    int top() \n    {\n        return sk.top().first;\n    }\n    \n    int getMin() \/\/\u5982\u679c\u4e3a\u7a7a\u7684\u65f6\u5019\u662f\u6ca1\u6709\u6700\u5c0f\u503c\u7684\n    {\n        return sk.empty() ? INT_MAX : sk.top().second;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/decode-string\/\">\u5b57\u7b26\u4e32\u89e3\u7801<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ecf\u5178\u6808<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    string decodeString(string s) {\n        \n        string ans;\n        for( auto ch : s){\n            if(ch != ']'){\n                ans.push_back(ch);\n            }else{\n                int num = 0;\n                string str = \"\";\n                string numStr = \"\";\n                \n                \/\/ \u5148\u8bfb\u53d6\u5b57\u6bcd\n                while(1){\n                    char tmp = ans.back();\n                    ans.pop_back();\n                    if(tmp == '&#91;') break;\n                    str = string(1 , tmp) + str;\n\n                }\n                \/\/\u518d\u8bfb\u53d6\u6570\u5b57\n                while(ans != \"\"){\n                    char tmp = ans.back();\n                    if(tmp &gt; '9' || tmp &lt; '0') break;\n                    ans.pop_back();\n                    numStr = string(1 , tmp) + numStr; \n                }\n                num = stoi(numStr);\n                for(int i = 0 ; i &lt; num ; i++){\n                    ans += str;\n                }\n            }\n        }\n        return ans;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/daily-temperatures\/\">\u6bcf\u65e5\u6e29\u5ea6<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u79cd\u6ca1\u505a\u8fc7\uff0c\u4f46\u505a\u4e00\u6b21\u5c31\u660e\u767d\u4e86\u3002\u5355\u8c03\u6808\uff0c\u628a\u524d\u9762\u6bd4\u81ea\u5df1\u5c0f\u7684\u90fd\u6740\u4e86\uff0c\u8fd9\u6837\u5de7\u5999\u7684\u5229\u7528\u4e86\u72b6\u6001\u3002\u3002\u5f53\u611f\u89c9\u8fd8\u662f\u5f88\u5947\u6280\u6deb\u5de723333.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    vector&lt;int&gt; dailyTemperatures(vector&lt;int&gt;&amp; temperatures) {\n        int n = temperatures.size();\n        stack&lt;pair&lt;int,int&gt;&gt; s;\n        vector&lt;int&gt; ans(n , 0);\/\/\u521d\u59cb\u5c31\u5047\u8bbe\u4f60\u627e\u4e0d\u5230\u66f4\u5927\u7684\n\n        for(int i = 0 ; i &lt;  n; i++){\n            if(s.empty()) s.push({i , temperatures&#91;i]});\n            else{\n                \/\/ \u6ca1\u7a7a\uff0c\u5c31\u4e00\u76f4\u8dd1\uff0c\u4fdd\u6301\u5355\u8c03\u51cf\n                while(!s.empty() &amp;&amp; temperatures&#91;i] &gt; s.top().second){\n                    auto pr = s.top();\n                    s.pop();\n                    ans&#91;pr.first] = i - pr.first;\n                }\n\n                \/\/ \u73b0\u5728\u80af\u5b9a\u9012\u51cf\uff0c\u90a3\u4e48\u5c31\u63d2\u5165\u8fd9\u4e2a\n                s.push({i , temperatures&#91;i]});\n            }\n        }\n        return ans;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/top-k-frequent-elements\/\">\u524d K \u4e2a\u9ad8\u9891\u5143\u7d20<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u6210\u4e86\uff01\u4f1a\u7528\u8fd9\u4e9b\u6548\u7387\u5927\u5927\u63d0\u9ad8<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    vector&lt;int&gt; topKFrequent(vector&lt;int&gt;&amp; nums, int k) {\n        \/\/ \u7528pair \uff0c\u548c\u5806\n        auto tmp = &#91;](const pair&lt;int , int&gt; &amp; a ,const pair&lt;int , int&gt; &amp; b){\n            return a.first &lt; b.first; \n        };\n        priority_queue&lt;pair&lt;int , int&gt; , vector&lt;pair&lt;int,int&gt; &gt;,  decltype(tmp)&gt; p;\n\n        \/\/ \u8bb0\u5f55\u6bcf\u4e00\u4e2a\u6570\u5b57\u51fa\u73b0\u6570\u91cf\n        unordered_map&lt;int , int &gt; mp;\n        for(auto num : nums){\n            mp&#91;num] += 1;\n        }\n\n        \/\/ \u5f00\u59cb\u63d2\u5165\n        for(auto pr : mp){\n            p.push({pr.second , pr.first});\n        }\n\n        vector&lt;int&gt; ans;\n        for(int i = 0 ; i &lt; k ; i++){\n            ans.push_back(p.top().second);\n            p.pop();\n        }\n        return ans;\n\n\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/find-median-from-data-stream\/\">\u6570\u636e\u6d41\u7684\u4e2d\u4f4d\u6570<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ef4\u62a4\u4e24\u4e2a\u5806\uff0c\u4e00\u4e2a\u5927\u4e8e\u4e2d\u4f4d\u6570\uff0c\u4e00\u4e2a\u5c0f\u4e8e\u4e2d\u4f4d\u6570\u3002\u8fd9\u6837\u4e2d\u95f4\u7684\u503c\u5c31\u662f\u7b54\u6848\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class MedianFinder {\npublic:\n    \/\/ \u601d\u8def\uff1a\u4e24\u4e2a\u5806\uff0c\u5927\u9876\u5806\u548c\u5c0f\u9876\u5bf9\n    \/\/ \u5927\u9876\u5806\u5bf9\u524d\u534a\u90e8\u5206\uff0c\u5927\u9876\u5806\u5bf9\u540e\u534a\u90e8\u5206\n    \/\/ \u8fd9\u6837\u6bcf\u6b21\u4e2d\u4f4d\u6570\u5c31\u662f\u4e2d\u95f4\u4fe9\u503c\n    priority_queue&lt;int> max_queue;\n    priority_queue&lt;int , vector&lt;int> , greater&lt;int>> min_queue;\n    int l = 0;\n    int r = 0;\n    MedianFinder() {\n        \n    }\n    \n    void addNum(int num) {\n        if(l == 0){\n            max_queue.push(num);\n            l++;\n        }\n        else {\n            if( num > max_queue.top()){\n                min_queue.push(num);\n                r++;\n            } else{\n                max_queue.push(num);\n                l++;\n            }\n        }\n\n        if(r > l){\n            int temp = min_queue.top();\n            min_queue.pop();\n            max_queue.push(temp);\n            r -- ;\n            l ++;\n        } else if( l > r + 1){\n            int temp = max_queue.top();\n            max_queue.pop();\n            min_queue.push(temp);\n            l --;\n            r++;\n        }\n    }\n    \n    double findMedian() {\n        if((r + l) % 2 == 0) return (double(max_queue.top()) + min_queue.top()) \/ 2;\n        return double(max_queue.top()) ;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/best-time-to-buy-and-sell-stock\/\">\u4e70\u5356\u80a1\u7968\u7684\u6700\u4f73\u65f6\u673a<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">1\u8fd8\u662f\u7b80\u5355\uff0c\u4f46\u662f\u770b\u7740\u539f\u6765\u9898\u89e3\u662f\u53cc\u6307\u9488\u6765\u77402333\u3002\u4e0d\u8fc7\u73b0\u5728\u4e5f\u89e3\u51b3\u4e86<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int maxProfit(vector&lt;int&gt;&amp; prices) {\n        \/\/ \u5bf9\u4e8e\u6700\u5927\u503c\uff0c\u80af\u5b9a\u662f\u5f53\u524d\u503c\u51cf\u53bb\u524d\u9762\u7684\u6700\u5c0f\u503c\u3002\n        int maxP = 0;\n        int curMin = prices&#91;0];\n        int n = prices.size();\n        for(int i = 1 ; i &lt; n ; i++){\n            maxP = max(maxP , prices&#91;i] - curMin);\n            curMin = min(curMin , prices&#91;i]);\n        }\n        return maxP;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/jump-game\/\">\u8df3\u8dc3\u6e38\u620f<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u539f\u7406\u662f\uff0c\u5982\u679c\u5230\u5f53\u524d\u683c\u5b50\u540e\uff0c\u8d70\u4e0d\u52a8\u4e86\uff0c\u5c31false\u3002\u5f53\u7136\uff0c\u4e0d\u7528\u8003\u8651\u8d70\u540e\u4e00\u4e2a\u683c\u5b50<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    bool canJump(vector&lt;int&gt;&amp; nums) {\n        int n = nums.size();\n        int resSteps = 0;\n        for(int i = 0 ; i &lt; n - 1; i++){\n            resSteps = max(resSteps , nums&#91;i]);\n            if(resSteps == 0) return false;\n            resSteps --;\n        }\n        return true;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/jump-game-ii\/\">\u8df3\u8dc3\u6e38\u620f II<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd8\u662f\u505a\u51fa\u6765\u4e86\uff0c\u4e5f\u662f\u6700\u4f18\u3002\u4f46\u662f\u7ec8\u4e8e\u4ecd\u7136\u9519\u4e86\u597d\u51e0\u6b2123333\uff0c\u4e0d\u77e5\u9053\u5f71\u54cd\u5927\u4e0d\u5927<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int jump(vector&lt;int&gt;&amp; nums) {\n        int n = nums.size();\n        int currentMax = 0;\n        int nextMax = 0;\n        int steps = 0;\n        \/\/ \u4ece\u5934\u5230\u5c3e\u904d\u5386\uff0c\u8bb0\u5f55\u8fd9\u4e00\u6b21\u8df3\u8dc3\u8303\u56f4\u5185\u7684\u6700\u5927\u503c\u3002\n        \/\/ \u6ce8\u610f\u4e00\u4e0b\u6700\u540e\u7684\u60c5\u51b5\u3002\u6211\u8fd9\u91cc\u76f8\u5f53\u4e8e\u8bb0\u5f55\u7684\u662f\u8d77\u8df3\u6b21\u6570\uff0c\u4f46\u6700\u540e\u4e00\u6b21\u662f\u4e0d\u9700\u8981\u8d77\u8df3\u7684\u3002\n        for(int i = 0 ; i &lt; n ; i++){\n            nextMax = max(nextMax , nums&#91;i]);\n            if(currentMax == 0 &amp;&amp; i != n-1){\n                steps ++;\n                currentMax = nextMax;\n            }\n            currentMax -- ;\n            nextMax --;\n        }\n        return steps;\n    }\n\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/climbing-stairs\/\">\u722c\u697c\u68af<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">dp[n] = dp[n-1]+dp[n-2]<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    vector&lt;int&gt; v;\n    int climbStairs(int n) {\n        v.resize(n);\n        if(n == 1) return 1;\n        else if(n == 2) return 2;\n        v&#91;0] = 1;\n        v&#91;1] = 2;\n        for(int i = 2 ; i &lt; n ; i++){\n            v&#91;i] = v&#91;i-1] +  v&#91;i - 2] ;\n        }\n        return v&#91;n -1];\n    }\n\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/pascals-triangle\/\">\u6768\u8f89\u4e09\u89d2<\/a><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    vector&lt;vector&lt;int&gt;&gt; generate(int numRows) {\n\n        vector&lt;vector&lt;int&gt;&gt; ans;\n        for(int i = 0 ; i &lt; numRows ; i++){\n            vector&lt;int&gt; v(i+1);\n            for(int j = 0 ; j &lt; i + 1 ; j ++){\n                if(j == 0 || j == i) v&#91;j] = 1;\n                else{\n                    v&#91;j] = ans&#91;i - 1]&#91;j - 1] + ans&#91;i - 1]&#91;j ];\n                }\n            }\n            ans.push_back(v);\n        }\n        return ans;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/house-robber\/\">\u6253\u5bb6\u52ab\u820d<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u60f3\u901a\u4e00\u4e2a\u70b9\uff0c\u4e00\u5b9a\u53ef\u4ee5\u5047\u8bbe\u5de6\u8fb9\u90a3\u4e2a\u662f\u7528\u7684\u3002\u56e0\u4e3a\u5982\u679cn\u6ca1\u6709\uff0c\u90a3\u4e48n-1\u7684\u503c\u5176\u5b9e\u662f\u4e00\u6837\u7684\uff0c\u90a3\u4e48\u4e5f\u4e0d\u5f71\u54cd<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int rob(vector&lt;int&gt;&amp; nums) {\n        \/\/ dp&#91;n] = max(dp&#91;n-2]+nums&#91;n] , dp&#91;n-1])\n        int n = nums.size();\n        if(n == 1) return nums&#91;0];\n        if(n == 2) return max(nums&#91;0] , nums&#91;1]);\n        vector&lt;int&gt; maxNums(n);\n        maxNums&#91;0] = nums&#91;0] ;\n        maxNums&#91;1] = max(nums&#91;0] , nums&#91;1]);\n        for(int i = 2 ; i &lt; n ; i++){\n            maxNums&#91;i] = max(maxNums&#91;i - 2] + nums&#91;i] , maxNums&#91;i - 1]);\n        }\n        return maxNums&#91;n - 1];\n    }\n\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/perfect-squares\/\">\u5b8c\u5168\u5e73\u65b9\u6570<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u601d\u8def\u5c31\u662fdp[n] = for each i^2 dp[n &#8211; i^2] + 1;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int numSquares(int n) {\n        \/\/ \u5bf9\u4e8e\u6240\u6709\u7684\u5c0f\u4e8en\u7684\u5e73\u65b9\u6570\n        \/\/ dp&#91;n] = for each i^2 dp&#91;n - i^2] + 1;\n        vector&lt;int&gt; v(n + 1);\n        vector&lt;int&gt; sqrt2;\n        int i = 0;\n        while(i * i &lt;= n){\n            sqrt2.push_back(i * i);\n            i++;\n        }\n        sqrt2.push_back(i * i);\n        v&#91;0] = 0;\n        for(int i = 1 ; i &lt; n + 1; i++){\n            int minSum = INT_MAX;\n            int j = 1 ;\n\n            while(sqrt2&#91;j] &lt;= i){\n                if(v&#91;i - sqrt2&#91;j]] &lt; minSum){\n                    minSum = v&#91;i - sqrt2&#91;j]];\n                }\n                j++;\n            }\n            v&#91;i] = minSum +1;\n        }\n        return v&#91;n];\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/coin-change\/\">\u96f6\u94b1\u5151\u6362<\/a>54<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fb9\u754c\u6761\u4ef6\u6709\u70b9\u786c\u51d1\u7684\u611f\u89c9\uff0c\u4f46\u662f\u505a\u51fa\u6765\u4e86<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int coinChange(vector&lt;int&gt;&amp; coins, int amount) {\n        \/\/ dp&#91;amount] = for each coin min(dp&#91;amount - coin]);\n        vector&lt;int&gt; dp(amount+1,INT_MAX);\n        dp&#91;0] = 0;\n        for(int i = 1 ; i &lt; amount + 1 ; i++){\n            for(auto coin : coins){\n                if(i - coin &gt;= 0 ){\n                    if(dp&#91;i - coin] != -1){\n                        dp&#91;i] = min(dp&#91;i - coin] + 1, dp&#91;i]);\n                    }\n                }\n            }\n            if(dp&#91;i] == INT_MAX ) dp&#91;i] = -1;\n        }\n        return dp&#91;amount];\n    }\n};<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u770b\u4e86\u770b\u7b54\u6848\uff0c\u5176\u5b9e\u4e5f\u548c\u6211\u4e00\u683723333\uff0c\u90a3\u4e0d\u7ba1\u4e86<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int coinChange(vector&lt;int&gt;&amp; coins, int amount) {\n        int Max = amount + 1;\n        vector&lt;int&gt; dp(amount + 1, Max);\n        dp&#91;0] = 0;\n        for (int i = 1; i &lt;= amount; ++i) {\n            for (int j = 0; j &lt; (int)coins.size(); ++j) {\n                if (coins&#91;j] &lt;= i) {\n                    dp&#91;i] = min(dp&#91;i], dp&#91;i - coins&#91;j]] + 1);\n                }\n            }\n        }\n        return dp&#91;amount] &gt; amount ? -1 : dp&#91;amount];\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/word-break\/\">\u5355\u8bcd\u62c6\u5206<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ecf\u5178\u52a8\u6001\u89c4\u5212<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    \n    bool wordBreak(string s, vector&lt;string&gt;&amp; wordDict) {\n        \/\/ \u5f00\u8868\n        int n = s.length();\n        vector&lt;int&gt; v(n+1 , 0);\n        v&#91;0] = 1;\n        \n        for(int i = 1 ; i &lt; n + 1 ; i++){\n            for(auto word : wordDict){\n                int word_len = word.length();\n                \/\/ \n                if(word_len &gt; i) continue;\n                int j = 0;\n                for( ; j &lt; word_len ; j++){\n                    \/\/1 - 1 + 0\n                    if(word&#91;j] != s&#91;i - word_len + j ]){\n                        break;\n                    }\n                }\n                int isOk = 0;\n                if(v&#91;i - word_len] &amp;&amp; (j == word_len)) isOk = 1;\n                v&#91;i] = max(v&#91;i] , isOk);\n            }\n        }\n        return v&#91;n];\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/longest-increasing-subsequence\/\">\u6700\u957f\u9012\u589e\u5b50\u5e8f\u5217<\/a><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int lengthOfLIS(vector&lt;int&gt;&amp; nums) {\n        \/\/ dp&#91;n] = for each num &lt; nums&#91;n] max (num + 1) \n        int n = nums.size();\n        vector&lt;int&gt; v(n);\n        v&#91;0] = 0;\n        int tMax = 0;\n        for(int i = 0 ; i &lt; n ; i++){\n            int max_num = 0;\n            for(int j = 0 ; j &lt; i ; j++){\n                if(nums&#91;j] &lt;nums&#91;i]){\n                    max_num = max(max_num , v&#91;j]);\n                }\n            }\n            v&#91;i] = max_num + 1;\n            tMax = max(tMax , v&#91;i]);\n        }\n        return tMax;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/maximum-product-subarray\/\">\u4e58\u79ef\u6700\u5927\u5b50\u6570\u7ec4<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ef4\u62a4\u6b63\u8d1f\u4e24\u4e2a\u6700\u5927\uff0c\u7136\u540e\u6839\u636e\u5f53\u524d\u9700\u8981\u53bb\u4e58\u3002\u6700\u540e\u5f97\u5230\u6700\u5927\u7684\u4e58\u79ef<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int maxProduct(vector&lt;int&gt;&amp; nums) {\n        int maxNum = INT_MIN;\n        int n = nums.size();\n        vector&lt;pair&lt;int,int&gt;&gt; v(n);\/\/0\u662f\u6700\u5927\u6b63\uff0c1\u662f\u6700\u5927\u8d1f\n        \/\/ dp&#91;n]&#91;0] = max (dp&#91;i-1].first*nums&#91;i] , nums&#91;i]);\n        v&#91;0].first = nums&#91;0];\n        v&#91;0].second = nums&#91;0];\n        maxNum = nums&#91;0];\n        for(int i = 1 ; i &lt; nums.size() ; i++){\n            if(nums&#91;i] &gt;= 0){\n                v&#91;i].first = max(v&#91;i-1].first*nums&#91;i] , nums&#91;i]);\n                v&#91;i].second = min(v&#91;i-1].second*nums&#91;i] , nums&#91;i]);\n            }else{\n                v&#91;i].second = min(v&#91;i-1].first*nums&#91;i] , nums&#91;i]);\n                v&#91;i].first = max(v&#91;i-1].second*nums&#91;i] , nums&#91;i]);\n            }\n            maxNum = max(maxNum , v&#91;i].first);\n        }\n        return maxNum;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/partition-equal-subset-sum\/\">\u5206\u5272\u7b49\u548c\u5b50\u96c6<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u601d\u8def\u5982\u4e0b\uff0c\u8f6c\u5316\u4e3a\u6570\u7ec4\u4e2d\u662f\u5426\u5b58\u5728\u548c\u4e3asum\/2\u7684<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    bool canPartition(vector&lt;int&gt;&amp; nums) {\n        \/\/ \u5b9e\u9645\u95ee\u9898\u8f6c\u5316\u4e3a\uff0c\u6570\u7ec4\u4e2d\uff0c\u662f\u5426\u5b58\u5728\u548c\u4e3a sum \/ 2 \u7684\n        int n = nums.size() , sum = 0;\n        for(auto num :nums) sum += num;\n\n        if(sum % 2 == 1) return false;\n        \/\/dp&#91;i]&#91;j] \u8868\u793a\u7528\u524di\u4e2a\u6570\uff0c\u662f\u5426\u80fd\u591f\u6c42\u548c\u5230j\n        \/\/ dp&#91;i]&#91;j] = max {dp&#91;i-1]&#91;j]\/\/\u4e0d\u7528\u8fd9\u4e2a\u6570\u5c31\u53ef\u4ee5 , dp&#91;i-1]&#91;j-num] } \n        vector&lt;vector&lt;int&gt;&gt; v(n );\/\/\u6784\u5efa\u6570\u7ec4\n        int target = sum \/ 2 ;\n        for(int i = 0 ; i &lt; n  ; i++ ){\n            v&#91;i].resize(target+1);\n        }\n\n        \/\/ \u4e0b\u9762\u8ba8\u8bba\uff0c\u662f\u5426\u80fd\u591f\u7528\u524di\u4e2a\u6570\u8fbe\u5230\u548cj\n        for(int j = 0 ; j &lt; target+1 ; j++){\n            for(int i = 0 ; i &lt; n; i++){\n                \/\/ \u5982\u679c\u548c\u4e3a0\uff0c\u53ef\u4ee5\u8fbe\u5230\n                if(j == 0) v&#91;i]&#91;j] = 1; \n                else if(i == 0) nums&#91;i] == target ? v&#91;i]&#91;j] = 1 : v&#91;i]&#91;j] = 0;\n                else if(j &gt;= nums&#91;i] ) v&#91;i]&#91;j] = max(v&#91;i-1]&#91;j] , v&#91;i - 1]&#91;j - nums&#91;i]]);\n                else v&#91;i]&#91;j] = v&#91;i - 1]&#91;j];\n            }\n        }\n        return v&#91;n - 1]&#91;sum \/ 2];\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/longest-valid-parentheses\/\">\u6700\u957f\u6709\u6548\u62ec\u53f7<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u9053\u9898\u5148\u53ef\u4ee5\u7528\u6808\u8fc7\u4e00\u904d\u3002\u6700\u540e\u5269\u4e0b\u7684\u90fd\u662f\u4e0d\u7b26\u5408\u89c4\u8303\u7684\uff0c\u6807\u8bb0\u4e3a1\u3002\u6700\u540e\u8ba1\u7b97\u8fde\u7eed0\u7684\u4e2a\u6570\u5373\u53ef\u3002\u5077\u61d2\u53ef\u4ee5\u76f4\u63a5\u5f00\u65b0\u6570\u7ec4\uff0c\u53cd\u6b63\u90fdo(n)\uff0c\u5982\u679c\u60f3\u7701\u4e00\u70b9\u5c31\u8ba1\u7b97\u5dee\u503c\uff0c\u8981\u6ce8\u610f\uff0c\u76f8\u5f53\u4e8e\u9996\u5c3e\u8981\u67090\u548cn\uff0c\u4ee5\u4fdd\u8bc1\u5c01\u95ed<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u8fc7\u53cd\u590d\u63d0\u4ea4\u4e86\u597d\u51e0\u6b21\uff0c\u56e0\u4e3a\u592a\u4e0d\u7ec6\u5fc3\u4e86\u3002\u4ee3\u7801\u4e00\u957f\u5c31\u4f1a\u72af\u5f88\u591a\u9519\u8bef23333.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int longestValidParentheses(string s) {\n        stack&lt;int&gt; sta;\n        int n = s.length();\n        if(n == 0) return 0;\n        \/\/ \u5f97\u5230\u4e86\u6808\n        for(int i = 0 ; i &lt; n ; i++){\n            if(sta.empty()) sta.push(i);\n            else{\n                if(s&#91;i] == '(') sta.push(i);\n                else {\n                    if(s&#91;sta.top()] == '(') sta.pop();\n                    else sta.push(i);\n                }\n            }\n        }\n\n        \/\/ \u5bf9\u4e8e\u6808\u6bcf\u4e00\u4e2a\u5143\u7d20\uff0c\u6807\u8bb0\u5728\u6570\u7ec4\n        int maxNum = 0 , cur = n;\n        if(sta.empty()) return n ;\n        int temp ;\n        while(!sta.empty()){\n            temp = sta.top();\n            sta.pop();\n            maxNum = max(cur - temp - 1  , maxNum);\n            cur = temp;\n        }\n        maxNum = max(maxNum , temp);\n        return maxNum;\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/unique-paths\/\">\u4e0d\u540c\u8def\u5f84<\/a><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int uniquePaths(int m, int n) {\n        vector&lt;vector&lt;int&gt;&gt; v(m);\n        \/\/dp&#91;i]&#91;j] = dp&#91;i-1]&#91;j]+dp&#91;i]&#91;j-1];\n        for(int i = 0 ; i &lt; m ;i ++) v&#91;i].resize(n);\n\n        for(int i = 0 ; i &lt; m ; i++){\n            for(int j = 0 ; j &lt; n ; j++){\n                \/\/\u5728\u8fb9\u4e0a\uff0c\u53ea\u6709\u4e00\u6761\u8def\u53ef\u4ee5\u8d70\n                if(i == 0 || j == 0){\n                    v&#91;i]&#91;j] = 1;\n                }\n                else{\n                    v&#91;i]&#91;j] = v&#91;i-1]&#91;j]+v&#91;i]&#91;j-1];\n                }\n            }\n        }\n        return v&#91;m-1]&#91;n-1];\n\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/minimum-path-sum\/\">\u6700\u5c0f\u8def\u5f84\u548c<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f88\u5bb9\u6613dp[m][n] = min( dp[m-1][n] + dp[m][n-1]) + nums[m][n]\uff0c\u8fd9\u79cd\u9898\u771f\u6da8\u6210\u5c31\u611f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int minPathSum(vector&lt;vector&lt;int&gt;&gt;&amp; grid) {\n        \/\/ dp&#91;m]&#91;n] = min( dp&#91;m-1]&#91;n] + dp&#91;m]&#91;n-1]) + nums&#91;m]&#91;n]\n        \n        int m = grid.size();\n        int n = grid&#91;0].size();\n        vector&lt;vector&lt;int&gt;&gt; dp(m);\n        \n        for(int i = 0 ; i &lt; m ; i++) dp&#91;i].resize(n);\n        for(int i = 0 ; i &lt; m ; i++){\n            for(int j = 0 ; j &lt; n ; j++){\n                if(i == 0 ||  j == 0){\n                    if(i == 0 &amp;&amp; j == 0) dp&#91;i]&#91;j] = grid&#91;i]&#91;j];\n                    else if(i == 0) dp&#91;i]&#91;j] = dp&#91;i]&#91;j-1] + grid&#91;i]&#91;j];\n                    else if(j == 0) dp&#91;i]&#91;j] = dp&#91;i-1]&#91;j] + grid&#91;i]&#91;j];\n                }\n                else{\n                    dp&#91;i]&#91;j] = min(dp&#91;i-1]&#91;j] , dp&#91;i]&#91;j-1]) + grid&#91;i]&#91;j];\n                }\n            }\n        }\n        return dp&#91;m-1]&#91;n-1];\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/longest-common-subsequence\/\">\u6700\u957f\u516c\u5171\u5b50\u5e8f\u5217<\/a><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int longestCommonSubsequence(string text1, string text2) {\n        \/\/ dp&#91;i]&#91;j] i\u8868\u793a\u6587\u672c1\u524di\u5b57\u6bcd\uff0cj\u8868\u793a\u6587\u672c2\u524dj\u5b57\u6bcd dp&#91;i]&#91;j] \u8868\u793a\u516c\u5171\u7684\u5b50\u5e8f\u5217\u957f\u5ea6\n        \/\/ dp&#91;i]&#91;j] = max(dp&#91;i-1]&#91;j-1] + s&#91;i] == s&#91;j] , dp&#91;i]&#91;j-1], dp&#91;i-1]&#91;j])\n        \n        int n1 = text1.length() , n2 = text2.length();\n        vector&lt;vector&lt;int&gt;&gt; dp(n1);\n        for(int i = 0 ; i &lt; n1 ;i++) dp&#91;i].resize(n2);\n\n        for(int i = 0 ; i &lt; n1 ; i++){\n            for(int j = 0 ; j &lt; n2 ; j++){\n                if( i == 0 || j == 0){\n                    if(i == 0 &amp;&amp; j == 0) dp&#91;i]&#91;j] = int(text1&#91;0] == text2&#91;0]);\n                    else if(i == 0) dp&#91;i]&#91;j] = max(dp&#91;i]&#91;j] = dp&#91;i]&#91;j-1] , int(text1&#91;i] == text2&#91;j]));\n                    else dp&#91;i]&#91;j] = max(dp&#91;i-1]&#91;j] , int(text1&#91;i] == text2&#91;j]));\n                }\n                else{\n                    dp&#91;i]&#91;j] = max(max(dp&#91;i-1]&#91;j-1]+ int(text1&#91;i] == text2&#91;j]) , dp&#91;i]&#91;j-1] ), dp&#91;i-1]&#91;j]);\n                }\n            }\n        }\n        return dp&#91;n1-1]&#91;n2-1];\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/longest-palindromic-substring\/\">\u6700\u957f\u56de\u6587\u5b50\u4e32<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7a00\u91cc\u7cca\u6d82\u8fc7\u7684\u3002\u5f88\u591a\u7ec6\u8282\u8fb9\u754c\u6761\u4ef6\u611f\u89c9\u4e0d\u662f\u7279\u522b\u60f3\u7684\u6e05\u695a\u3002\u4f46\u662f\u770b\u8fd9\u91cc\u6700\u597d\u662f\u4e0d\u7528\u52a8\u5f52\uff0c\u4f46\u6211\u7ba1\u4f60\u76842333<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    string longestPalindrome(string s) {\n        \/\/dp&#91;i]&#91;j] \u8868\u793a\u5728&#91;i,j]\u5185\u662f\u5426\u662f\u56de\u6587\n        \/\/dp&#91;i]&#91;j] = dp&#91;i+1]&#91;j-1] &amp;&amp; s&#91;i] == s&#91;j]\n        \/\/dp&#91;i]&#91;i] = true\n\n        int n = s.length();\n        vector&lt;vector&lt;int&gt;&gt; dp(n);\n        for(int i = 0 ; i &lt; n ;i++) dp&#91;i].resize(n,0);\n        pair&lt;int , int&gt; maxPair = {0,0};\n        \/\/ \u659c\u7740\u904d\u5386\uff0c\u4e00\u6761\u4e00\u6761\u7684\n        for(int j = 0 ; j &lt; n ; j++){\n            for(int i = 0 ; i &lt; n -j; i++){\n                \/\/ \u5982\u679c\u662f\u7b2c\u4e00\u6761\uff0c\u5373\u81ea\u5df1\u548c\u81ea\u5df1\uff0c\u90a3\u80af\u5b9a\u56de\u6587\n                if(j == 0) dp&#91;i]&#91;j+i] = 1;\n                \/\/ \u5982\u679c\u662f\u7b2c\u4e8c\u6761\uff0c\u5219\u662f\u4e24\u4e2a\uff0c\u6bd4\u8f83\u4e24\u4e2a\u76f8\u540c\u5c31\u56de\u6587\n                else if(j == 1) dp&#91;i]&#91;j+i] = int(s&#91;i] == s&#91;j+i]);\n                \/\/\u5bf9\u4e8e\u540e\u9762\u7684\uff0c\u6bd4\u8f83\u8981\u65b0\u52a0\u7684\u4e24\u4e2a\u662f\u5426\u76f8\u7b49\uff0c\u4e14\u5185\u90e8\u8981\u662f\u56de\u6587\uff0c\u5373dp&#91;i+1]&#91;j-1] &amp;&amp; s&#91;i] == s&#91;j]\n                else{\n                    dp&#91;i]&#91;j+i] = dp&#91;i+1]&#91;j+i-1] &amp;&amp; int(s&#91;i] == s&#91;j+i]); \n                }\n                \/\/\u8bb0\u5f55\u6700\u5927\u7684\u957f\u5ea6\n                if(dp&#91;i]&#91;j+i] &amp;&amp; (j &gt; maxPair.second - maxPair.first)){\n                    maxPair.first = i;\n                    maxPair.second = j+i;\n                }\n            }\n        }\n        int x = maxPair.first , y = maxPair.second;\n        return s.substr(x,y-x+1);\/\/\u548c\u4e0b\u9762\u7b49\u4ef7\n        \/\/ string ans;\n        \/\/ while(x != y){\n        \/\/     ans += s&#91;x++];\n        \/\/ }\n        \/\/ ans += s&#91;x];\n        \/\/ return ans;\n        \n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/edit-distance\/\">\u7f16\u8f91\u8ddd\u79bb<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u8bfe\u8bb2\u8fc7\u7684\uff0c\u4e00\u4e0b\u5c31\u6709\u611f\u89c9\u53ef\u4ee5\u505a\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u8fc7\u600e\u4e48\u8bf4\u5462\uff0c\u8fd8\u662f\u8fb9\u754c\u3002\u5bf9\u4e8e\u8fb9\u754c\u4e24\u79cd\u5904\u7406\u65b9\u6cd5\uff0c\u4e00\u79cd\u662f\u6269\u5927\u8868\uff0c\u6bd4\u5982\u8bf4\u8981m * n\uff0c\u90a3\u4e48\u6211\u5c31\u9020\u4e00\u4e2a (m + 1) * (n + 1) \uff0c\u8fd9\u6837\u8fb9\u754c\u5f88\u5feb\u5904\u7406\uff0c\u5bf9\u4e8e\u6838\u5fc3\u4e0d\u7528\u4fee\u6539\u3002\u4e00\u79cd\u662f\u5c0f\u5fc3\u8003\u8651\u8fb9\u754c\u60c5\u51b5\u3002\u8fd9\u4e2a\u5c31\u5c5e\u4e8e\u8fd9\u4e00\u79cd\uff0c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    int minDistance(string word1, string word2) {\n        \/\/ dp&#91;i]&#91;j] word1\u524di\u4e2a \u548c word2\u524dj\u4e2a\uff0c\u6700\u5c0f\u7684\u904d\u5386\u8ddd\u79bb\n        \/\/ dp&#91;i]&#91;j] = min{dp&#91;i-1]&#91;j] + 1 , dp&#91;i]&#91;j-1] + 1 , dp&#91;i-1]&#91;j-1] + s&#91;i] == s&#91;j]}\n        int n1 = word1.length() , n2 =word2.length();\n        vector&lt;vector&lt;int&gt;&gt; dp(n1+1);\n        for(int i = 0 ; i &lt; n1+ 1 ; i++) dp&#91;i].resize(n2+1);\n        for(int i = 0 ; i &lt; n1 + 1; i++){\n            for(int j = 0 ; j &lt; n2 +1; j++){\n                if(i == 0 || j == 0){\n                    if(i == 0 &amp;&amp; j == 0) dp&#91;i]&#91;j] = 0;\n                        else if(i == 0) dp&#91;i]&#91;j] = dp&#91;i]&#91;j-1] + 1;\n                        else dp&#91;i]&#91;j] = dp&#91;i-1]&#91;j] + 1;\n                }\n                else {\n                    dp&#91;i]&#91;j] = min(min(dp&#91;i-1]&#91;j] + 1 , dp&#91;i]&#91;j-1] + 1) , dp&#91;i-1]&#91;j-1] + int(word1&#91;i-1] != word2&#91;j-1]));\n                }\n            }\n        }\n        return dp&#91;n1]&#91;n2];\n    }\n};<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u989c\u8272\u5206\u7c7b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u53c8\u53cc\u53d2\u53d5\u4e00\u4e2a\u8111\u7b4b\u6025\u8f6c\u5f2f\uff0c\u4e0d\u8fc7\u8fd9\u6b21\u4e00\u4e0b\u5c31\u770b\u51fa\u6765\u4e86<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u4e3a\u53ea\u6709\u4e09\u79cd\u7403\uff0c\u6240\u4ee5\u53ea\u9700\u8981\u7edf\u8ba1\u6bcf\u79cd\u51fa\u73b0\u7684\u4e2a\u6570\u3002\u7136\u540e\u518d\u4ece\u5934\u5230\u5c3e\u904d\u5386\u4e00\u6b21\u76f4\u63a5\u8986\u76d6\u539f\u6570\u7ec4\uff0c\u5b8c\u6210\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void sortColors(vector&lt;int&gt;&amp; nums) {\n        int a_sum = 0 , b_sum = 0 , c_sum = 0;\n        int n = nums.size();\n        for(int i = 0 ; i &lt; n ; i++){\n            if(nums&#91;i] == 0) a_sum++;\n            else if(nums&#91;i] == 1) b_sum++;\n            else c_sum++;\n        }\n        for(int i = 0 ; i &lt; n ; i++){\n            if(a_sum &gt; 0) {\n                nums&#91;i] = 0;\n                a_sum --;\n            } else if( b_sum &gt; 0){\n                nums&#91;i] = 1;\n                b_sum --;\n            } else {\n                nums&#91;i] = 2;\n                c_sum --;\n            }\n        }\n    }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e0b\u4e00\u4e2a\u6392\u5217<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">2333\uff0c\u8bf4\u4eba\u8bdd\u5c31\u662f<br>\u627e\u51fa\u8fd9\u4e2a\u6570\u7ec4\u6392\u5e8f\u51fa\u7684\u6240\u6709\u6570\u4e2d\uff0c\u521a\u597d\u6bd4\u5f53\u524d\u6570\u5927\u7684\u90a3\u4e2a\u6570<br>\u6bd4\u5982\u5f53\u524d nums = [1,2,3]\u3002\u8fd9\u4e2a\u6570\u662f123\uff0c\u627e\u51fa1\uff0c2\uff0c3\u8fd93\u4e2a\u6570\u5b57\u6392\u5e8f\u53ef\u80fd\u7684\u6240\u6709\u6570\uff0c\u6392\u5e8f\u540e\uff0c\u6bd4123\u5927\u7684\u90a3\u4e2a\u6570 \u4e5f\u5c31\u662f132<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u5927\u6982\u505a\u5230\u4e86\u53ef\u4ee5\u4fdd\u8bc1\u6bd4\u5f00\u59cb\u5927\uff0c\u4f46\u662f\u6ca1\u6709\u6070\u597d\u4e0b\u4e00\u4e2a\u3002\u8fd9\u79cd\u9898\u5c31\u662f\u7eaf\u6570\u5b66\u9898\uff0c\u60f3\u660e\u767d\u5c31\u5bb9\u6613\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b65\u9aa4\u5206\u4e3a\u4e09\u6b65\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void nextPermutation(vector&lt;int&gt;&amp; nums) {\n        \/\/\u9996\u5148\u627e\u5230\u7b2c\u4e00\u4e2a\u9006\u5e8f\u6392\u5217\u7684\n        \/\/ \u904d\u5386\u8fc7\u7684\u90e8\u5206\uff08\u5012\u7740\u770b\uff09\u4e00\u5b9a\u662f\u6309\u7167\u4ece\u5c0f\u5230\u5927\u6392\u5217\n        int i = nums.size() - 2 ;  \n        while(i &gt;= 0){\n            if(nums&#91;i+1] &gt; nums&#91;i]) \n                break;\n            i--;\n        }\n\n        \/\/\u518d\u4ece\u540e\u9762\u4e2d\uff0c\u627e\u5230\u6070\u597d\u6bd4\u5f53\u524d\u5927\u7684\u503c\n        \/\/ \u5982\u679c\u4e0d\u662f-1\uff0c\u5219\u8bf4\u660e\u4e0d\u9700\u8981\u627e\u503c\n        if(i != -1){\n            int j = nums.size() - 1;\n            while(j &gt; i){\n                if(nums&#91;j] &gt; nums&#91;i]){\n                    swap(nums&#91;j] , nums&#91;i]);\n                    break;\n                }\n                j--;\n            }\n        }\n        \/\/\u6700\u540e\uff0c\u540e\u534a\u90e8\u5206reverse\n        reverse(nums.begin() + i + 1 , nums.end());\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9898\u76ee\u90fd\u662fhot100\uff0c\u8bb0\u5f55\u505a\u9898\u5fc3\u5f97\u3002 \u4e24\u6570\u4e4b\u548c \u7ed9\u5b9a\u4e00\u4e2a\u6574\u6570\u6570\u7ec4 nums&nbsp;\u548c\u4e00\u4e2a\u6574\u6570\u76ee\u6807\u503c tar [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-3182","post","type-post","status-publish","format-standard","hentry","category-note"],"_links":{"self":[{"href":"https:\/\/www.haruhi.fans\/index.php?rest_route=\/wp\/v2\/posts\/3182","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.haruhi.fans\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.haruhi.fans\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.haruhi.fans\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.haruhi.fans\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3182"}],"version-history":[{"count":12,"href":"https:\/\/www.haruhi.fans\/index.php?rest_route=\/wp\/v2\/posts\/3182\/revisions"}],"predecessor-version":[{"id":3336,"href":"https:\/\/www.haruhi.fans\/index.php?rest_route=\/wp\/v2\/posts\/3182\/revisions\/3336"}],"wp:attachment":[{"href":"https:\/\/www.haruhi.fans\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3182"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.haruhi.fans\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3182"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.haruhi.fans\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}