💡 Your key insight here.
hellow backtracking
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263// Your code hereclass Solution {public:vector<vector<int>> ans;vector<int> path;vector<bool> used;void solve(vector<int>& nums) {// Base Case// One complete permutation formedif(path.size() == nums.size()) {ans.push_back(path);return;}// for(each choice)for(int i = 0; i < nums.size(); i++) {// Skip if already chosenif(used[i])continue;// ------------------// CHOOSE// ------------------path.push_back(nums[i]);used[i] = true;// Example:// [] -> [1]// [1] -> [1,2]// ------------------// SOLVE// ------------------solve(nums);// Explore everything// possible after choosing nums[i]// ------------------// UNDO// ------------------path.pop_back();used[i] = false;// Restore state// [1,2] -> [1]// [1] -> []}}vector<vector<int>> permute(vector<int>& nums) {used.resize(nums.size(), false);solve(nums);return ans;}};