/**
* Index: 46
* Title: Permutations
* Author: ltree98
**/
题意
给定一组不同的数,输出这些数的全排列。
我的
思路
先说方法 —— 递归,
由于题目说了是不同数字,所以不用考虑数字相同的情况。
求 [1, 2, 3] 全排列,
先求 [2, 3] 全排列,
再将 1 插入到 [2, 3] 全排列的各个位置。
直到所求的全排列数组大小小于等于1。
时间复杂度: O(n^2)
空间复杂度: O(n)
实现
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> ans;
if(nums.size() <= 1) {
ans.push_back(nums);
}
else {
int num = nums[0];
nums.erase(nums.begin());
vector<vector<int>> afterAns = permute(nums);
for(int i = 0; i < afterAns.size(); i++) {
for(int j = 0; j <= afterAns[i].size(); j++) {
vector<int> tmp = afterAns[i];
tmp.insert(tmp.begin() + j, num);
ans.push_back(tmp);
}
}
}
return ans;
}
};