Given a collection of distinct numbers, return all possible permutations.
For example,
[1,2,3]
have the following permutations:
[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
class Solution { private: vector<vector<int>>res; vector<int>ans; unordered_set<int>a; public: vector<vector<int>> permute(vector<int> &num) { if(num.empty()) return res; dfs(0, num); return res; } void dfs(int s, vector<int>num){ if(s == num.size()) res.push_back(ans); for(int i = 0; i < num.size(); i++){ if(a.find(num[i]) != a.end()) continue; a.insert(num[i]); ans.push_back(num[i]); dfs(s + 1, num); ans.pop_back(); a.erase(num[i]); } } };
Subscribe to see which companies asked this question.