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 { public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> res; permuteCore(nums, 0, res); return res; } void permuteCore(vector<int>& num, int bg, vector<vector<int>>& res) { if (bg >= num.size()) { res.push_back(num); return; } for (int i = bg; i != num.size(); i++) { swap(num[bg], num[i]); permuteCore(num, bg + 1, res); swap(num[bg], num[i]); } } }; // 9 ms
原文:http://www.cnblogs.com/immjc/p/7567153.html