题目链接
注意点
- n个数字共有
n!
个全排列
解法
解法一:每一个排列用Next Permutation - LeetCode中的函数生成,一共有n!
个。时间复杂度O(n)。
class Solution {
public:
void nextPermutation(vector<int>& nums) {
int n = nums.size(),i = n-2,j = n-1;
while(i >= 0 && nums[i] >= nums[i+1]) i--;
if(i >= 0)
{
while(nums[j] <= nums[i]) j--;
swap(nums[i],nums[j]);
}
reverse(nums.begin()+i+1,nums.end());
}
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> ret;
int n = nums.size(),temp = 1,i;
for(i = 1;i <= n;i++)
{
temp *= i;
}
while(temp >= 1)
{
ret.push_back(nums);
nextPermutation(nums);
temp--;
}
return ret;
}
};
小结
- 排列题,有许多变种