class Solution {
public:
vector<vector<int> > ret;
vector<int> sln;
void DFS(vector<int> &num, vector<bool> &used, int n) {
if (n == num.size()) {
ret.push_back(sln);
return;
}
for (int i = 0; i < num.size(); i++) {
if (used[i]) continue;
used[i] = true;
sln.push_back(num[i]);
DFS(num, used, n + 1);
sln.pop_back();
used[i] = false;
}
}
vector<vector<int> > permute(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<bool> used(num.size());
ret.clear();
sln.clear();
DFS(num, used, 0);
return ret;
}
};
Small Case: 8ms
Large Case: 80ms