#include using std::vector; class Solution { public: void dfs(const vector &nums, vector ¤t, bool *num_used, vector> &result) { if (current.size() == nums.size()) { result.push_back(current); return; } for (int i = 0; i < nums.size(); i++) { if (!num_used[i]) { num_used[i] = true; current.push_back(nums[i]); dfs(nums, current, num_used, result); current.pop_back(); num_used[i] = false; } } } vector> permute(vector &nums) { vector current; vector> result; bool *num_used = new bool[nums.size()]{false}; dfs(nums, current, num_used, result); delete[] num_used; return result; } };