{"id":1543,"date":"2024-11-14T11:49:59","date_gmt":"2024-11-14T03:49:59","guid":{"rendered":"http:\/\/114.55.108.251\/?p=1543"},"modified":"2025-01-14T11:24:40","modified_gmt":"2025-01-14T03:24:40","slug":"%e5%8a%9b%e6%89%a3%e9%a2%98%e8%ae%b0%e4%b9%8b%e5%9b%9e%e6%ba%af","status":"publish","type":"post","link":"https:\/\/guapicoding.com\/?p=1543","title":{"rendered":"\u529b\u6263\u9898\u8bb0\u4e4b\u56de\u6eaf"},"content":{"rendered":"\n<p class=\"has-text-align-center\"><em><strong>More content<\/strong><\/em><strong><em>\uff1a<\/em><\/strong><a href=\"https:\/\/guapicoding.com\/?p=1541\" data-type=\"post\" data-id=\"1541\">LeetCode hot100@\u56de\u6eaf<\/a><\/p>\n\n\n\n<p><strong>\u56de\u6eaf\u7b97\u6cd5\u53ef\u89e3\u51b3\u7684\u95ee\u9898\u7c7b\u578b\uff1a<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7ec4\u5408\u95ee\u9898\uff1aN\u4e2a\u6570\u91cc\u9762\u6309\u4e00\u5b9a\u89c4\u5219\u627e\u51fak\u4e2a\u6570\u7684\u96c6\u5408\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/leetcode.cn\/problems\/letter-combinations-of-a-phone-number\/\">17. \u7535\u8bdd\u53f7\u7801\u7684\u5b57\u6bcd\u7ec4\u5408<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/leetcode.cn\/problems\/combination-sum\/\">39. \u7ec4\u5408\u603b\u548c<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/leetcode.cn\/problems\/combination-sum-ii\/\">40. \u7ec4\u5408\u603b\u548c II<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/leetcode.cn\/problems\/combination-sum-iii\/\">216. \u7ec4\u5408\u603b\u548c III<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/leetcode.cn\/problems\/combinations\/\">77. \u7ec4\u5408<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u5207\u5272\u95ee\u9898\uff1a\u4e00\u4e2a\u5b57\u7b26\u4e32\u6309\u4e00\u5b9a\u89c4\u5219\u6709\u51e0\u79cd\u5207\u5272\u65b9\u5f0f\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/leetcode.cn\/problems\/restore-ip-addresses\/\">93. \u590d\u539f IP \u5730\u5740<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/leetcode.cn\/problems\/palindrome-partitioning\/\">131. \u5206\u5272\u56de\u6587\u4e32<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u5b50\u96c6\u95ee\u9898\uff1a\u4e00\u4e2aN\u4e2a\u6570\u7684\u96c6\u5408\u91cc\u6709\u591a\u5c11\u7b26\u5408\u6761\u4ef6\u7684\u5b50\u96c6\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/leetcode.cn\/problems\/subsets\/\">78. \u5b50\u96c6<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/leetcode.cn\/problems\/subsets-ii\/\">90. \u5b50\u96c6 II<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u6392\u5217\u95ee\u9898\uff1aN\u4e2a\u6570\u6309\u4e00\u5b9a\u89c4\u5219\u5168\u6392\u5217\uff0c\u6709\u51e0\u79cd\u6392\u5217\u65b9\u5f0f\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/leetcode.cn\/problems\/permutations\/\">46. \u5168\u6392\u5217<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/leetcode.cn\/problems\/permutations-ii\/\">47. \u5168\u6392\u5217 II<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u68cb\u76d8\u95ee\u9898\uff1aN\u7687\u540e\uff0c\u89e3\u6570\u72ec\u7b49\u7b49\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/leetcode.cn\/problems\/sudoku-solver\/\">37. \u89e3\u6570\u72ec<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/leetcode.cn\/problems\/n-queens\/\">51. N \u7687\u540e<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/letter-combinations-of-a-phone-number\/\">17. \u7535\u8bdd\u53f7\u7801\u7684\u5b57\u6bcd\u7ec4\u5408<\/a>\u2705<\/h2>\n\n\n\n<p><strong><em>\u5b9a\u4e49\u5168\u5c40\u53d8\u91cf\uff0c\u7cbe\u7b80\u9012\u5f52\u51fd\u6570\u53c2\u6570<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\nprivate:\n    vector&lt;string&gt; res;\n    string path;\n    int n;\n    unordered_map&lt;char, string&gt; mp;\npublic:\n    void backtracking(string digits, int depth) {\n        if(path.size() == n) {\n            res.push_back(path);\n            return ;\n        }\n\n        for(const char &amp;i : mp&#91;digits&#91;depth]]) {\n            path += i;\n            backtracking(digits, depth + 1);\n            path.erase(path.size() - 1, 1);\n        }\n    }\n    vector&lt;string&gt; letterCombinations(string digits) {\n        if(!digits.size()) return res;\n        \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        n = digits.size();\n        backtracking(digits, 0);\n\n        return res;\n    }\n};<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/combination-sum\/\">39. \u7ec4\u5408\u603b\u548c<\/a>\u2705<\/h2>\n\n\n\n<p><strong><em>target\u9012\u51cf\uff0c\u7531\u4e24\u4e2a\u53c2\u6570\u53d8\u4e3a\u4e00\u4e2a\u53c2\u6570<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\nprivate:\n    vector&lt;vector&lt;int&gt;&gt; res;\n    vector&lt;int&gt; path;\npublic:\n    void backtracking(vector&lt;int&gt;&amp; candidates, int sub_target, int startIndex) {\n        if(sub_target &lt; 0) return ; \/\/\u548c\u8d85\u51fa\u76ee\u6807\u4e86\uff0c\u4f5c\u5e9f\n        if(!sub_target) { \/\/\u548c\u6b63\u597d\u7b49\u4e8e\u76ee\u6807\u503c\uff0c\u8bb0\u5f55\n            res.push_back(path);\n            return ;\n        }\n\n        for(int i = startIndex; i &lt; candidates.size(); i++) {\n            path.push_back(candidates&#91;i]);\n            backtracking(candidates, sub_target - candidates&#91;i], i); \/\/\u5141\u8bb8\u91cd\u590d\u9009\u53d6\u5f53\u524d\u5143\u7d20\uff0c\u4f46\u4e0d\u80fd\u56de\u5230\u4e4b\u524d\u7684\u5143\u7d20\n            path.pop_back();\n        }\n    }\n    vector&lt;vector&lt;int&gt;&gt; combinationSum(vector&lt;int&gt;&amp; candidates, int target) {\n        backtracking(candidates, target, 0);\n\n        return res;\n    }\n};<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/combination-sum-ii\/\">40. \u7ec4\u5408\u603b\u548c II<\/a>\u274c<\/h2>\n\n\n\n<p><em><strong>\u8ddf\u4e0a\u9898\u7684\u533a\u522b\u662f\u6570\u7ec4\u4e2d\u7684\u5143\u7d20\u6709\u53ef\u80fd\u91cd\u590d\uff0c\u4e14\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e2a\u6570\u5b57\u5728\u6bcf\u4e2a\u7ec4\u5408\u4e2d\u6700\u591a\u51fa\u73b0\u4e00\u6b21<\/strong><\/em><\/p>\n\n\n\n<p><strong><em>\u5982\u4f55\u5728\u641c\u7d22\u7684\u8fc7\u7a0b\u4e2d\u53bb\u6389\u91cd\u590d\u7ec4\u5408\uff1f<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\nprivate:\n    vector&lt;vector&lt;int&gt;&gt; res;\n    vector&lt;int&gt; path;\npublic:\n    void backtracking(vector&lt;int&gt;&amp; candidates, int sub_target, int startIndex) {\n        if(sub_target &lt; 0) return ; \/\/\u548c\u8d85\u51fa\u76ee\u6807\u4e86\uff0c\u4f5c\u5e9f\n        if(!sub_target) { \/\/\u548c\u6b63\u597d\u7b49\u4e8e\u76ee\u6807\u503c\uff0c\u8bb0\u5f55\n            res.push_back(path);\n            return ;\n        }\n\n        for(int i = startIndex; i &lt; candidates.size(); i++) {\n            \/\/\u5bf9\u540c\u4e00\u6811\u5c42\uff08\u6ce8\u610f\u4e0d\u662f\u6811\u679d\uff09\u4f7f\u7528\u8fc7\u7684\u5143\u7d20\u8df3\u8fc7\n            if(i &gt; startIndex &amp;&amp; candidates&#91;i] == candidates&#91;i - 1]) continue;\n     \n            path.push_back(candidates&#91;i]);\n            backtracking(candidates, sub_target - candidates&#91;i], i + 1); \/\/\u4e0d\u5141\u8bb8\u91cd\u590d\u9009\u53d6\u5f53\u524d\u5143\u7d20\n            path.pop_back();\n        }\n    }\n    vector&lt;vector&lt;int&gt;&gt; combinationSum2(vector&lt;int&gt;&amp; candidates, int target) {\n        ranges::sort(candidates); \/\/\u5148\u6392\u5e8f\n        backtracking(candidates, target, 0);\n    \n        return res;\n    }\n};<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/combination-sum-iii\/\">216. \u7ec4\u5408\u603b\u548c III<\/a>\u2705<\/h2>\n\n\n\n<p><strong><em>\u66f4\u7b80\u5355\u4e86<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\nprivate:\n    vector&lt;vector&lt;int&gt;&gt; res;\n    vector&lt;int&gt; path;\npublic:\n    void backTracking(int startNum, int n, int k) {\n        if(k &lt; 0 || n &lt; 0) return ;\n        if(!k &amp;&amp; !n) {\n            res.push_back(path);\n            return ;\n        }\n        \n        for(int i = startNum; i &lt;= 9; i++) {\n            path.push_back(i);\n            backTracking(i + 1, n - i, k - 1);\n            path.pop_back();\n        }\n    }\n    vector&lt;vector&lt;int&gt;&gt; combinationSum3(int k, int n) {\n        backTracking(1, n, k);\n\n        return res;\n    }\n};<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/combinations\/\">77. \u7ec4\u5408<\/a>\u2705<\/h2>\n\n\n\n<p><strong><em>\u8bbe\u7f6e\u904d\u5386\u521d\u59cb\u503c<\/em><\/strong><\/p>\n\n\n\n<p><em><strong>\u526a\u679d\u4f18\u5316<\/strong><\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\nprivate:\n    vector&lt;vector&lt;int&gt;&gt; res;\n    vector&lt;int&gt; v;\npublic:\n    void backtracking(int k, int n) {\n        if(v.size() == k) { \/\/k\u4e2a\u6570\u591f\u4e86 \u8bb0\u5f55\u7ed3\u679c\n            res.push_back(v);\n            return ;\n        }\n\n        int start = 1;\n        if(v.size()) start = v&#91;v.size() - 1] + 1;\n        \/\/ for(int i = start; i &lt;= n; i++) {\n        for(int i = start; i &lt;= n - k + v.size() + 1; i++) { \/\/\u526a\u679d\uff1a\u5143\u7d20\u6570\u91cf\u4e0d\u591f\u4e86\u5c31\u6ca1\u5fc5\u8981\u904d\u5386\u4e86\n            v.push_back(i);\n            backtracking(k, n);\n            v.pop_back(); \/\/\u56de\u6eaf\n        }\n    }\n    vector&lt;vector&lt;int&gt;&gt; combine(int n, int k) {\n        backtracking(k, n);\n\n        return res;\n    }\n};<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/restore-ip-addresses\/\">93. \u590d\u539f IP \u5730\u5740<\/a>\u2705<\/h2>\n\n\n\n<p><em><strong>\u904d\u5386\u56de\u6eaf\u5207\u5272 + \u68c0\u6d4b\u975e\u6cd5\u5b57\u6bb5<\/strong><\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\nprivate:\n    vector&lt;string&gt; res;\n    string path;\npublic:\n    void backTracking(string s, int depth, int startIndex) {\n        if(depth == 4) {\n            if(s.size() == startIndex) res.push_back(path);\n            return ;\n        }\n  \n        for(int i = 1; i &lt;= 3 &amp;&amp; startIndex + i &lt;= s.size(); i++) { \/\/\u904d\u5386\u8981\u5207\u7684\u4f4d\u6570    \n            if(!checkIP(s, startIndex, i)) continue;\n            path.append(s, startIndex, i);\n            if(depth != 3) path += \".\";\n            backTracking(s, depth + 1, startIndex + i);\n            if(depth != 3) path.erase(path.size() - 1, 1);\n            path.erase(path.size() - i, i);\n        }\n    }\n\n    bool checkIP(string s, int beginIndex, int len) {\n        if(len != 1 &amp;&amp; s&#91;beginIndex] == '0') return false; \/\/\u68c0\u6d4b\u524d\u5bfc0\n        int ip = 0;\n        for(int i = 0; i &lt; len; i++) {\n            ip += (s&#91;beginIndex + i] - '0') * pow(10, len - i - 1);\n        }\n        \/\/ cout &lt;&lt; ip &lt;&lt; endl;\n        if(ip &gt; 255) return false; \n        return true;\n    }\n\n    vector&lt;string&gt; restoreIpAddresses(string s) {\n        backTracking(s, 0, 0);\n        \/\/ checkIP(s, 0, 3);\n        return res;\n    }\n};<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/palindrome-partitioning\/\">131. \u5206\u5272\u56de\u6587\u4e32<\/a>\u2705<\/h2>\n\n\n\n<p><strong><em>\u4e0e<a href=\"https:\/\/leetcode.cn\/problems\/restore-ip-addresses\/\">93. \u590d\u539f IP \u5730\u5740<\/a>\u601d\u8def\u4e00\u6837 \u4f46\u66f4\u7b80\u5355\u4e00\u4e9b<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\nprivate:\n    vector&lt;vector&lt;string&gt;&gt; res;\n    vector&lt;string&gt; path;\npublic:\n    void backTracking(string s, int startIndex) {\n        if(s.size() == startIndex) {\n            res.push_back(path);\n            return ;\n        }\n  \n        for(int i = 1; startIndex + i &lt;= s.size(); i++) { \/\/\u904d\u5386\u8981\u5207\u7684\u4f4d\u6570    \n            if(!checkPalindrome(s, startIndex, i)) continue;\n            path.push_back(s.substr(startIndex, i));\n            backTracking(s, startIndex + i);\n            path.pop_back();\n        }\n    }\n\n    bool checkPalindrome(string s, int beginIndex, int len) {\n        int l = beginIndex;\n        int r = beginIndex + len - 1;\n        while(l &lt;= r) {\n            if(s&#91;l++] != s&#91;r--]) return false;\n        }\n        return true;\n    }\n\n    vector&lt;vector&lt;string&gt;&gt; partition(string s) {\n        backTracking(s, 0);\n        \/\/ if(checkPalindrome(s, 0, 3)) cout &lt;&lt; \"yes\";\n        \/\/ else cout &lt;&lt; \"no\";\n        return res;\n    }\n};<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/subsets\/\">78. \u5b50\u96c6<\/a>\u2705<\/h2>\n\n\n\n<p><strong><em>\u63a7\u5236\u4e00\u4e0b\u957f\u5ea6\u5373\u53ef<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\nprivate:\n    vector&lt;vector&lt;int&gt;&gt; res;\n    vector&lt;int&gt; path;\n\npublic:\n    void backTracking(vector&lt;int&gt;&amp; nums, int startIndex, int len) {\n        if(path.size() == len) {\n            res.push_back(path);\n            return ;\n        }\n\n        for(int i = startIndex; i &lt; nums.size(); i++) {\n            path.push_back(nums&#91;i]);\n            backTracking(nums, i + 1, len);\n            path.pop_back();\n        }\n    }\n    vector&lt;vector&lt;int&gt;&gt; subsets(vector&lt;int&gt;&amp; nums) {\n        res.push_back({});\n        res.push_back(nums);\n\n        for(int i = 1; i &lt; nums.size(); i++) {\n            backTracking(nums, 0, i);\n        }\n\n        return res;\n    }\n};<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/subsets-ii\/\">90. \u5b50\u96c6 II<\/a>\u2705<\/h2>\n\n\n\n<p><em><strong>\u8fd8\u662f\u540c\u4e00\u6811\u5c42\u53bb\u91cd<\/strong><\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\nprivate:\n    vector&lt;vector&lt;int&gt;&gt; res;\n    vector&lt;int&gt; path;\n    vector&lt;int&gt; flags;\npublic:\n    void backTracking(vector&lt;int&gt;&amp; nums, int startIndex, int len) {\n        if(path.size() == len) {\n            res.push_back(path);\n            return ;\n        }\n\n        for(int i = startIndex; i &lt; nums.size(); i++) {\n            \/\/flags&#91;i - 1] == 1\u8bf4\u660enum&#91;i - 1]\u88ab\u540c\u4e00\u6811\u679d\u7528\u8fc7\u4e86\n            \/\/\u5f53nums&#91;i] == nums&#91;i - 1]\u65f6\uff0cflags&#91;i - 1] == 0\u8bf4\u660enum&#91;i - 1]\u88ab\u540c\u4e00\u6811\u5c42\u7528\u8fc7\u4e86\n            if(i &gt; 0 &amp;&amp; nums&#91;i] == nums&#91;i - 1] &amp;&amp; flags&#91;i - 1] == 0) continue;\n            path.push_back(nums&#91;i]);\n            flags&#91;i] = 1;\n            backTracking(nums, i + 1, len);\n            flags&#91;i] = 0;\n            path.pop_back();\n        }\n    }\n    vector&lt;vector&lt;int&gt;&gt; subsetsWithDup(vector&lt;int&gt;&amp; nums) {\n        res.push_back({});\n        res.push_back(nums);\n\n        flags.resize(nums.size(), 0);\n        ranges::sort(nums);\n        for(int i = 1; i &lt; nums.size(); i++) {\n            backTracking(nums, 0, i);\n        }\n\n        return res;\n    }\n};<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/permutations\/\">46. \u5168\u6392\u5217<\/a>\u2705<\/h2>\n\n\n\n<p><strong><em>\u7528\u4e00\u4e2a\u6570\u7ec4\u6765\u8bb0\u5f55nums\u4e0b\u6807\u7684\u72b6\u6001\uff0c\u5373\u8bb0\u5f55\u4e0b\u6807\u5bf9\u5e94\u7684\u5143\u7d20\u662f\u5426\u88ab\u7528\u8fc7(\u6bd4\u5982flags[2] = 1\u4ee3\u8868nums[2]\u88ab\u4f7f\u7528\u8fc7\u4e86)<\/em><\/strong><\/p>\n\n\n\n<p><em><strong>ps\uff1a\u4e3a\u4ec0\u4e48\u4e0d\u76f4\u63a5\u8bb0\u5f55\u5143\u7d20\u662f\u5426\u88ab\u7528\u8fc7\uff1f\u56e0\u4e3a\u5143\u7d20\u4e2d\u6709\u8d1f\u6570\uff0c\u4e0b\u6807\u90fd\u662f\u975e\u8d1f\u6570\uff0c\u6240\u4ee5\u7528\u4e0b\u6807\u6765\u8bb0\u5f55\u4e0b\u6807\uff0c\u53cd\u6b63nums\u6570\u7ec4\u7684\u4e0b\u6807\u548c\u5143\u7d20\u5bf9\u5e94\u5173\u7cfb\u4e0d\u4f1a\u53d8<\/strong><\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\nprivate:\n    vector&lt;vector&lt;int&gt;&gt; res;\n    vector&lt;int&gt; path;\n    vector&lt;int&gt; flags;\npublic:\n    void backTracking(vector&lt;int&gt;&amp; nums) {\n        if(path.size() == nums.size()) {\n            res.push_back(path);\n            return ;\n        }\n\n        for(int i = 0; i &lt; nums.size(); i++) {\n            if(flags&#91;i]) continue;\n            path.push_back(nums&#91;i]);\n            flags&#91;i] = 1;\n            backTracking(nums);\n            path.pop_back();\n            flags&#91;i] = 0;\n        }\n    }\n    vector&lt;vector&lt;int&gt;&gt; permute(vector&lt;int&gt;&amp; nums) {\n        flags.resize(nums.size(), 0);\n        backTracking(nums);\n        \n        return res;\n    }\n};<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/permutations-ii\/\">47. \u5168\u6392\u5217 II<\/a>\u274c<\/h2>\n\n\n\n<p><em><strong>\u4f9d\u65e7<\/strong><\/em><strong><em>\u7528\u4e00\u4e2a\u6570\u7ec4\u6765\u8bb0\u5f55nums\u4e0b\u6807\u7684\u72b6\u6001\uff0c\u5173\u952e\u662f\u5982\u4f55\u53bb<\/em><\/strong><em><strong>\u91cd<\/strong><\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\nprivate:\n    vector&lt;vector&lt;int&gt;&gt; res;\n    vector&lt;int&gt; path;\n    vector&lt;int&gt; flags;\npublic:\n    void backTracking(vector&lt;int&gt;&amp; nums) {\n        if(path.size() == nums.size()) {\n            res.push_back(path);\n            return ;\n        }\n\n        for(int i = 0; i &lt; nums.size(); i++) {\n            \/\/flags&#91;i - 1] == 1\uff0c\u8bf4\u660e\u540c\u4e00\u6811\u679dnums&#91;i - 1]\u4f7f\u7528\u8fc7\n            \/\/flags&#91;i - 1] == 0\uff0c\u8bf4\u660e\u540c\u4e00\u6811\u5c42nums&#91;i - 1]\u4f7f\u7528\u8fc7\uff0c\u56e0\u4e3aflags\u72b6\u6001\u662f\u5728\u540c\u4e00\u6811\u679d\u5171\u4eab\u7684\uff0c\u800c\u4e0d\u662f\u6811\u5c42\uff0c\u4e14\u904d\u5386\u662f\u6309\u987a\u5e8f\u6765\u7684\n            \/\/\u5982\u679c\u540c\u4e00\u6811\u5c42nums&#91;i - 1]\u4f7f\u7528\u8fc7\u5219\u76f4\u63a5\u8df3\u8fc7\n            if(i &gt; 0 &amp;&amp; nums&#91;i] == nums&#91;i - 1] &amp;&amp; !flags&#91;i-1]) continue;\n            if(!flags&#91;i]) {\n                path.push_back(nums&#91;i]);\n                flags&#91;i] = 1;\n                backTracking(nums);\n                path.pop_back();\n                flags&#91;i] = 0;\n            }\n        }\n    }\n    vector&lt;vector&lt;int&gt;&gt; permuteUnique(vector&lt;int&gt;&amp; nums) {\n        flags.resize(nums.size(), 0);\n        ranges::sort(nums);  \n        backTracking(nums);\n        \n        return res;\n    }\n};<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/sudoku-solver\/\">37. \u89e3\u6570\u72ec<\/a>\u274c<\/h2>\n\n\n\n<p><strong><em><s>\u4e00\u5f00\u59cb\u60f3\u7684\u662f\u8ddf<a href=\"https:\/\/leetcode.cn\/problems\/n-queens\/\">51. N \u7687\u540e<\/a>\u601d\u8def\u4e00\u6837\uff0c\u6309\u884c\u5f80\u4e0b\u9012\u5f52\u641c\uff0c\u5bf9\u5217\u4ee5\u53ca\u6bcf\u4e00\u4e2a\u53ef\u80fd\u7684\u6570\u5b57\u90fd\u904d\u5386\uff0c\u4f46\u662f\u8d85\u65f6\uff0c\u5f97\u7528\u4e8c\u7ef4\u9012\u5f52<\/s><\/em><\/strong><\/p>\n\n\n\n<p><strong><em>\u4e8c\u7ef4\u9012\u5f52\uff1a\u904d\u5386\u884c\u548c\u5217\uff0c\u9012\u5f52\u8fdb\u53bb\u7684\u662f\u786e\u5b9a\u7684\u8fd9\u4e2a\u5c0f\u683c\u5b50\uff08\u4e4b\u524d\u9012\u5f52\u8fdb\u53bb\u7684\u90fd\u662f\u884c\uff0c\u4e00\u884c\u4e00\u884c\u9012\u5f52\u7740\u5f80\u4e0b\u641c\uff09\uff0c\u5c0f\u683c\u5b50\u5185\u586b\u54ea\u4e2a\u6570\u5b57\u7684\u53ef\u80fd\u6027\u7528\u904d\u5386\u5b9e\u73b0<\/em><\/strong><\/p>\n\n\n\n<p><strong><em>\u56e0\u4e3a\u672c\u9898\u53ea\u6709\u552f\u4e00\u89e3\uff0c\u4e0d\u7528\u4e00\u76f4\u5b58\u50a8\u7b54\u6848\uff0c\u6240\u4ee5\u9012\u5f52\u51fd\u6570\u8fd4\u56de\u503c\u4e3abool\uff0c\u9047\u5230\u76f4\u63a5\u7ed3\u675f\u5e1d\u9012\u5f52<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\npublic:\n    bool backTracking(vector&lt;vector&lt;char&gt;&gt;&amp; board) {\n        for(int row = 0; row &lt; board.size(); row++) { \/\/\u904d\u5386\u884c\n            for(int col = 0; col &lt; board&#91;0].size(); col++) { \/\/\u904d\u5386\u5217\n                if(board&#91;row]&#91;col] != '.') continue;\n                for(char num = '1'; num &lt;= '9'; num++) {\/\/\u5f53\u524d\u5c0f\u683c\u5b50\u653e\u54ea\u4e2a\u6570\u5408\u9002\n                    if(checkValid(board, row, col, num)) {\n                        board&#91;row]&#91;col] = num;                \n                        if (backTracking(board)) return true; \/\/\u5982\u679c\u627e\u5230\u4e00\u7ec4\u7b54\u6848\u7acb\u523b\u8fd4\u56de,\u56e0\u4e3a\u552f\u4e00\u89e3\n                        board&#91;row]&#91;col] = '.';             \n                    }\n                }\n                return false; \/\/ 9\u4e2a\u6570\u8bd5\u5b8c\u4e86\u90fd\u4e0d\u884c\uff0c\u8fd4\u56defalse\n            }\n        }\n        return true; \/\/\u904d\u5386\u5b8c\u6ca1\u6709\u8fd4\u56defalse\uff0c\u8bf4\u660e\u627e\u5230\u7b54\u6848\u4e86\n    }\n\n    bool checkValid(vector&lt;vector&lt;char&gt;&gt;&amp; board, int row, int col, int num) {\n        for(int i = 0; i &lt; 9; i++) { \/\/\u68c0\u67e5\u884c\n            if(board&#91;row]&#91;i] == num) return false;\n        }\n        for(int i = 0; i &lt; 9; i++) { \/\/\u68c0\u67e5\u5217\n            if(board&#91;i]&#91;col] == num) return false;\n        }\n        \/\/\u5148\u786e\u5b9a\u6240\u5c5e\u5355\u5143\u683c\u7684\u5de6\u4e0a\u89d2\u5143\u7d20\u5750\u6807\n        \/\/\u8fd9\u6bb5\u548c\u4ee3\u7801\u968f\u60f3\u5f55\u7684\u601d\u8def\u7adf\u7136\u4e00\u6a21\u4e00\u6837 \u53d8\u91cf\u540d\u90fd\u4e00\u6837\u3002\u3002\u3002\n        int startRow = row \/ 3 * 3; \n        int startCol = col \/ 3 * 3;\n        for(int i = 0; i &lt; 3; i++) { \/\/\u68c0\u67e5\u5355\u5143\u683c\n            for(int j = 0; j &lt; 3; j++) { \n                if(board&#91;i + startRow]&#91;j + startCol] == num) return false;\n            }      \n        }\n\n        return true;\n    }\n\n    void solveSudoku(vector&lt;vector&lt;char&gt;&gt;&amp; board) {\n        backTracking(board);\n    }\n};<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/leetcode.cn\/problems\/n-queens\/\">51. N \u7687\u540e<\/a>\u274c<\/h2>\n\n\n\n<p><strong><em><s>\u601d\u8def\u6ca1\u95ee\u9898\uff0c\u5148\u6309\u884c\u641c\u51fa\u6240\u6709\u65b9\u6848\uff0c\u518d\u5bf9\u5217\u3001\u6487\u3001\u637a\u8fdb\u884c\u5408\u6cd5\u6027\u68c0\u67e5\uff0c\u4f46\u6ca1\u60f3\u51fa\u6487\u548c\u637a\u7684\u68c0\u67e5\u516c\u5f0f\uff0c\u7f3a\u70b9\u662f\u641c\u51fa\u6240\u6709\u65b9\u6848\u5728\u7b5b\u9009\uff0c\u6548\u7387\u4f4e<\/s><\/em><\/strong><\/p>\n\n\n\n<p><em><strong>\u5728\u641c\u7684\u8fc7\u7a0b\u4e2d\u5c31\u68c0\u67e5\u5408\u6cd5\u6027\uff0c\u975e\u6cd5\u7684\u76f4\u63a5\u8df3\u8fc7<\/strong><\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Solution {\nprivate:\n    vector&lt;vector&lt;string&gt;&gt; res;\npublic:\n    void backTracking(vector&lt;string&gt; &amp;tep, int n, int row) {\n        if(row == n) {\n            res.push_back(tep); \n            return ;\n        }\n\n        for(int col = 0; col &lt; n; col++) { \/\/\u53ea\u904d\u5386\u5f53\u524d\u884c\u7684\u6bcf\u5217\uff0c\u904d\u5386\u884c\u9012\u5f52\u5b9e\u73b0\n            if(checkValid(row, col, tep, n)) { \n                tep&#91;row]&#91;col] = 'Q';\n                backTracking(tep, n, row + 1); \/\/row\u76f8\u5f53\u4e8e\u6df1\u5ea6\n                tep&#91;row]&#91;col] = '.'; \/\/\u56de\u6eaf,\u64a4\u9500Q\n            }\n        }\n    }\n\n    bool checkValid(int row, int col, vector&lt;string&gt; &amp;tep, int n) {\n        for(int i = 0; i &lt; n; i++) { \/\/\u68c0\u67e5\u5217\n            if(tep&#91;i]&#91;col] == 'Q') return false;\n        }\n      \n        for(int i = row - 1, j = col - 1; i &gt;= 0 &amp;&amp; j &gt;= 0; i--, j--) { \/\/\u68c0\u67e5\u637a\n            if(tep&#91;i]&#91;j] == 'Q') {\n                return false;\n            }\n        }\n\n        for(int i = row - 1, j = col + 1; i &gt;= 0 &amp;&amp; j &lt; n; i--, j++) { \/\/\u68c0\u67e5\u6487\n            if(tep&#91;i]&#91;j] == 'Q') {\n                return false;\n            }\n        }\n\n        return true;\n    }\n    \n    vector&lt;vector&lt;string&gt;&gt; solveNQueens(int n) {\n        vector&lt;string&gt; tep(n, string(n, '.')); \/\/\u521d\u59cb\u5316\u68cb\u76d8\uff0c\u7b49\u6548\u4e8e\u4e0b\u9762\u6570\u884c\n        \/\/ vector&lt;string&gt; tep;\n        \/\/ for(int i = 0; i &lt; n; i++) {\n        \/\/     string s;\n        \/\/     for(int j = 0; j &lt; n; j++) {\n        \/\/         s += '.';\n        \/\/     }\n        \/\/     tep.push_back(s);\n        \/\/ }\n        backTracking(tep, n, 0);\n        \n        return res;\n    }\n};<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>More content\uff1aLeetCode hot100@\u56de\u6eaf \u56de\u6eaf\u7b97\u6cd5\u53ef\u89e3\u51b3\u7684\u95ee\u9898\u7c7b\u578b\uff1a 17. \u7535\u8bdd\u53f7\u7801\u7684 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[18,19,55],"class_list":["post-1543","post","type-post","status-publish","format-standard","hentry","category-suanfa","tag-leetcode","tag-19","tag-55"],"_links":{"self":[{"href":"https:\/\/guapicoding.com\/index.php?rest_route=\/wp\/v2\/posts\/1543","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/guapicoding.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/guapicoding.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/guapicoding.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/guapicoding.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1543"}],"version-history":[{"count":21,"href":"https:\/\/guapicoding.com\/index.php?rest_route=\/wp\/v2\/posts\/1543\/revisions"}],"predecessor-version":[{"id":2326,"href":"https:\/\/guapicoding.com\/index.php?rest_route=\/wp\/v2\/posts\/1543\/revisions\/2326"}],"wp:attachment":[{"href":"https:\/\/guapicoding.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1543"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/guapicoding.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1543"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/guapicoding.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1543"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}