标签:
Given a collection of 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]
,
and [3,2,1]
.
思路:一个用stl,一个就是dfs,每次固定前cur个,然后依次和之后的数交换
class Solution { public: vector<vector<int> > permute(vector<int> &num) { sort(num.begin(), num.end()); vector<vector<int> > ans; do { ans.push_back(num); } while (next_permutation(num.begin(), num.end())); return ans; } };
class Solution { public: void dfs(vector<int> &num, vector<vector<int> > &ans, int cur, int n) { if (cur == n) { ans.push_back(num); } for (int i = cur; i < n; i++) { swap(num[cur], num[i]); dfs(num, ans, cur+1, n); swap(num[cur], num[i]); } } vector<vector<int> > permute(vector<int> &num) { vector<vector<int> > ans; int n = num.size(); dfs(num, ans, 0, n); return ans; } };
标签:
原文地址:http://blog.csdn.net/u011345136/article/details/44116095