diff --git a/solution/046.Permutations/Solution.cpp b/solution/046.Permutations/Solution.cpp new file mode 100644 index 0000000000000..53c6d493ec0e7 --- /dev/null +++ b/solution/046.Permutations/Solution.cpp @@ -0,0 +1,35 @@ +class Solution { +public: + vector> permute(vector& nums) { + if (nums.size() == 0) return{}; + vector> res; + vector curr_vec; + vector used; + for (int i = 0; i < nums.size(); i++) + { + used.push_back(false); + } + dfs(res, nums, 0, curr_vec, used); + return res; + } + + void dfs(vector>& res, vector& nums, int depth, vector curr_vec, vector used) + { + + if (depth >= nums.size()) + { + res.emplace_back(curr_vec); + return; + } + + for (int i = 0; i < nums.size(); i++) + { + if (used[i]) continue; + used[i] = true; + curr_vec.emplace_back(nums[i]); + dfs(res, nums, depth + 1, curr_vec, used); + curr_vec.pop_back(); + used[i] = false; + } + } +};