1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 | class Solution {
private:
int N;
vector<bool> used;
vector<vector<int>> ans;
vector<int> cur;
void dfs(int idx, vector<int> &nums) {
if (idx == N) {
ans.push_back(cur);
return;
}
for (int i = 0; i < N; i++) {
if (!used[i]) {
used[i] = true;
cur[idx] = nums[i];
dfs(idx + 1, nums);
used[i] = false;
}
}
}
public:
vector<vector<int>> permute(vector<int> &nums) {
N = nums.size();
ans.clear();
cur.assign(N, 5566);
used.assign(N, false);
dfs(0, nums);
return ans;
}
};
|