From b1ad080afe5080850c19568aae089492a3b54cfa Mon Sep 17 00:00:00 2001 From: tianzhongwei <52898945+tianzhongwei@users.noreply.github.com> Date: Mon, 22 Jun 2020 19:39:08 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E5=AD=90=E9=9B=86=E6=8E=92=E5=88=97?= =?UTF-8?q?=E7=BB=84=E5=90=88.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加对应的C++版本 --- ...22\345\210\227\347\273\204\345\220\210.md" | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\255\220\351\233\206\346\216\222\345\210\227\347\273\204\345\220\210.md" "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\255\220\351\233\206\346\216\222\345\210\227\347\273\204\345\220\210.md" index 15b0274285..41bff4bcae 100644 --- "a/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\255\220\351\233\206\346\216\222\345\210\227\347\273\204\345\220\210.md" +++ "b/\351\253\230\351\242\221\351\235\242\350\257\225\347\263\273\345\210\227/\345\255\220\351\233\206\346\216\222\345\210\227\347\273\204\345\220\210.md" @@ -199,7 +199,7 @@ vector> permute(vector& nums); ![](../pictures/子集/3.jpg) 我们当时使用 Java 代码写的解法: - +[labuladong](https://github.com/labuladong) 提供Java解法代码: ```java List> res = new LinkedList<>(); @@ -231,6 +231,44 @@ void backtrack(int[] nums, LinkedList track) { } } ``` +[renxiaoyao](https://github.com/tianzhongwei) 提供C++解法代码: +```C++ +class Solution { +public: + vector> permute(vector& nums) { + paths.clear(); + path.clear(); + + vector used(nums.size(),false); + + helper(nums,used); + + return paths; + } +private: + void helper(vector& nums,vector& used) { + if(path.size() == nums.size()) { + paths.push_back(path); + return ; + } + + for(int i = 0 ; i < nums.size() ; ++i) { + if(used[i]) continue; + + used[i] = true; + path.push_back(nums[i]); + + helper(nums,used); + + path.pop_back(); + used[i] = false; + } + } +private: + vector> paths; + vector path; +}; +``` 回溯模板依然没有变,但是根据排列问题和组合问题画出的树来看,排列问题的树比较对称,而组合问题的树越靠右节点越少。 @@ -255,4 +293,4 @@ void backtrack(int[] nums, LinkedList track) { [下一篇:二分查找详解](../算法思维系列/二分查找详解.md) -[目录](../README.md#目录) \ No newline at end of file +[目录](../README.md#目录)